2010-03-06 33 views
8

Câu hỏi 1: VớiMootools - làm thế nào để có được giá trị của chọn loại đầu vào radio, từ tên của nó

<input type="radio" name="foo" value="1" /> 
<input type="radio" name="foo" value="2" /> 
<input type="radio" name="foo" value="3" /> 

Trong Mootools, làm thế nào để trở về "2" cho một đầu vào của "foo", giả định rằng nút radio thứ hai đã được nhấp.


Câu hỏi 2: (nó có liên quan) - Với tương tự hộp kiểm đầu vào, làm thế nào để trở về hoặc là một mảng hoặc dấu phẩy tách ra danh sách các giá trị kiểm tra?

Tôi muốn gửi các giá trị của các yếu tố đầu vào này thông qua Request.JSON, chuyển nó như một tham số GET.

Trả lời

17

Giả sử tên của hộp kiểm là "foo", để có được những mục radio được chọn, bạn có thể sử dụng:

var values = $$('input[name=foo]:checked'​​​​​​​​​​​​​​).map(function(e) { return e.value; }); 

này trả về một mảng với 1 mục, được bán với giá các yếu tố được lựa chọn.

Hoặc chỉ mở rộng mẫu thử của Array và thêm phương thức getFirst().

Array.implement({ 
    getFirst: function() { 
     if(this.length == 0) { 
      return null; 
     } 
     return this[0]; 
    } 
}); 

Sau đó, bạn có thể làm điều này:

var value = $$('input[name=foo]:checked').getFirst().value; 

Tương tự như vậy, để có được tất cả các hộp kiểm tra kiểm tra, sử dụng:

var values = $$('input[name=foo]:checked'​​​​​​​​​​​​​​).map(function(e) { return e.value; }); 

Đồng đô la tăng gấp đôi ($$) Hàm này được dùng để chọn nhiều các phần tử có bộ chọn CSS. Sau đó, một bản đồ (một phần của lớp Array) có thể được áp dụng cho các phần tử đó để chỉ nhận được (các) giá trị cần thiết.

Bạn có thể đọc thêm về các pseudo-selectors tại http://mootools.net/docs/core/Utilities/Selectors

+3

để sử dụng ít, tại sao không chỉ sử dụng 'formel.getElement (" input [name = foo]: checked ")' - không cần giao dịch mảng ở đây. Tôi muốn có cách tiếp cận đó và nhiều hơn nữa khả năng mở rộng và vòng lặp của nó thông qua nhiều radio với điều này như gọi lại. –

+3

tôi đã sử dụng $$ vì OP chỉ có tên trường trong câu hỏi. Nhưng nếu phần tử form có sẵn hoặc id của nó được biết, thì chúng ta cũng có thể sử dụng '$ ('formID'). GetElement ('input [name = foo]: checked"). Value' – Anurag

+0

Cảm ơn. Tôi đã sử dụng '$ (getElement ('input [name = foo]: checked ").value' cho radio (chỉ có một giá trị) và '$$ ('# formID input [name = foo]: checked')' cho các hộp kiểm. – philfreo

2

Dưới đây là làm thế nào để nhận được giá trị của đài phát thanh:

var value =$$('input[name=type]:checked').get('value'); 

Khá dễ dàng ....

-1

gì không làm việc trong Firefox 3.15.16 ngoại trừ biểu thức:

var radio = $ ('adminForm'). GetElements ("input [name = 'xuất bản'] "). bộ lọc (hàm (e) {if (e.checked) trả về e; }) [0] .giá trị;


Xin lỗi vì tiếng Anh !!!

0

Mã trên hoạt động tốt trong Firefox nhưng IE không thích nó chút nào. Sau khi một chút tinh chỉnh đã đưa ra công việc khủng khiếp này xung quanh.

Add onchange = "toggleChecked (this)" cho mỗi radio và sau đó thêm chức năng này vào bạn JS nộp

function toggleChecked(el) { 
    el.checked = !el.checked; 
    el.checked = !el.checked; 
} 

và sau đó để đọc nút đã được chọn

var selectFoo; 
$$('input[name=foo]').each(function (el){ 
    if (el.checked == true) { 
     selectFoo = el.value; 
    } 
}); 

Bây giờ nếu ai đó có thể đưa ra một giải pháp IE tốt hơn, tôi sẽ đánh giá cao nó.

6

Không cần

var value = $$('input[name=foo]:checked').getFirst().value; 

Chỉ cần sử dụng:

var value = $$('input[name=foo]:checked')[0].get('value'); 
2

Câu trả lời tốt nhất là từ weiqianglufromchina, nhưng có lỗi này

$$('input[name=type]:checked').get('value'); 

này cần được

$$('input[name=RADIONAME]:checked').get('value'); 

thử nghiệm trên firefox, chrome, explorer. mootools 1.2.4/1.3

cổ vũ

+0

Vâng, đó là cách để đi http://jsfiddle.net/2JFRh/ – eerne

+0

tôi nghĩ rằng vấn đề sâu hơn là họ không muốn được trả lại một mảng, đó là những gì $$() nào – Kristian

1

Chỉ sử dụng cái này gần đây trong Mootools 1.11. Tôi sử dụng:

var value = $$('input[name=foo]).filter(function(el) { 
    return el.getProperty("checked") 
})[0];   

Khá lâu nhưng làm việc. Đã thử với FF 3.x

Phiên bản mới hơn của Mootools có thể sử dụng cú pháp ngắn hơn như các câu trả lời khác được cung cấp.

2

tính năng này phù hợp với tôi.

$$('input[name=foo]:checked').pick().get('value'); 
3

Cách dễ dàng để nhận được giá trị kiểm tra phát thanh là:

$('formID').getElement('input[name=foo]:checked').get('value'); 

MooTools 1.4.5 - getElement()

Gets các yếu tố hậu duệ đầu tiên có tên thẻ phù hợp với từ khóa cung cấp. Bộ chọn CSS cũng có thể được chuyển.

đề cập trước đó

$$('input[name=foo]:checked').get('value'); 

cũng là cách dễ dàng để có được tất cả các kiểm tra giá trị hộp kiểm, làm việc với 1.4.5 verison

BR

Các vấn đề liên quan