2011-06-30 33 views
12

Tôi muốn kiểm tra đầu vào radio đã chọn.javascript radio đã chọn

đây là mã của tôi.

<input name="u_type" type="radio" value="staff" id="u_type" checked="checked" /> Staff 
<input name="u_type" type="radio" value="admin" id="u_type" /> Admin 
<input id="add_user" name="add_user" type="button" onclick="addUser();" value="Add" class="submitButton admin_add" /> 

function addUser() 
{ 
//how to check what is the selected radio input 
} 

cảm ơn.

+0

Bất kỳ cơ hội nào bạn đang sử dụng jQuery hoặc có thể sử dụng trong mã của bạn? –

+0

Nếu bạn chỉ có hai nút, điều này sẽ giúp bạn: http://stackoverflow.com/questions/1423777/how-can-i-check-if-a-radio-button-is-selected-in-javascript –

Trả lời

20
function addUser() { 
    //how to check what is the selected radio input 
    alert(getCheckedRadioValue('u_type')); 
} 

function getCheckedRadioValue(name) { 
    var elements = document.getElementsByName(name); 

    for (var i=0, len=elements.length; i<len; ++i) 
     if (elements[i].checked) return elements[i].value; 
} 

Và ID phần tử phải khác.

+2

Nó nên được đặt tên là * getCheckedRadioValue * vì nó không trả về mã HTML của radio như nó có thể gợi ý! –

+0

@ sorx00 AFAICT '++ i' sẽ bỏ qua lần xuất hiện đầu tiên, tôi quan tâm hơn đến' i ++ ' – metaleap

+0

@metaleap tôi không nghĩ như vậy http://stackoverflow.com/questions/3469885/somevariable-vs -somevariable-in-javascript – sorx00

-1

Sau đây là việc thực hiện jQuery để nhận được giá trị của một nút radio

$("#u_type").click(function() { 
var value = $(this).val(); 
}); 

Nếu bạn muốn sử dụng javascript, sau đó:

function get_radio_value() 
{ 
for (var i=0; i < document.form.u_type.length; i++) 
{ 
    if (document.form.u_type[i].checked) 
    { 
    var val = document.form.u_type[i].value; 
    } 
    } 
} 
4
$('input[name=u_type]:checked').val() 

sẽ giúp bạn có được giá trị của tùy chọn đã chọn mà bạn có thể, tất nhiên, gán cho một biến. Do lời khuyên, tôi cũng nên chỉ ra rằng đây là jquery, một thư viện javascript tiện dụng để làm cho thao tác DOM dễ dàng hơn và với khả năng tương thích trình duyệt chéo tuyệt vời. Nó có thể được tìm thấy here.

+0

OP không nói gì về jQuery. –

+2

Đúng, nhưng jquery là javascript. – kinakuta

+2

@kinakuta: Vậy? Nếu một câu hỏi chỉ được gắn thẻ với 'javascript', bạn nên cho rằng không nên sử dụng thư viện nào khác. Và nếu bạn sử dụng một, bạn nên nêu rõ điều này trong câu trả lời của bạn và liên kết đến nó. –

0

Bạn không nên có hai phần tử radio có cùng id. Bạn cần phải thay đổi một trong các id sau đó kiểm tra cả hai nút radio như:

if(document.getElementById("u_type").checked == true) 
{ 
    //do something 
} 

Tôi khuyên bạn nên sử dụng jquery để thực hiện điều này thay vì js gốc.

+2

Không có lý do gì để tải TẤT CẢ của jQuery khi một vài dòng mã sẽ đủ. – jsonnull

+0

Đồng ý. được nấu bởi vì khi tôi nghĩ js tôi nghĩ jquery, nó phụ thuộc vào hoàn cảnh. –

+0

Tại sao bạn so sánh một boolean với true? 'if (document.getElementById (" u_type "). được chọn)' –

1

Hoặc để đề xuất của kmb385 bạn có thể bao gồm các đầu vào của bạn trong một biểu mẫu và đảm bảo tất cả tên đầu vào khác nhau (bạn có hai tên u_type).

Sau đó, bạn có thể truy cập các đầu vào là document.formname.inputname.checked, sẽ trả về giá trị true hoặc false.

6

Để có được giá trị của nút radio được đánh dấu, mà không jQuery:

var radios = document.getElementsByName("u_type"); 
for(var i = 0; i < radios.length; i++) { 
    if(radios[i].checked) selectedValue = radios[i].value; 
} 

(giả định rằng selectedValue là một biến khai báo ở những nơi khác)