2011-06-30 86 views
12

我想檢查選定的無線電輸入是什麼。javascript selected radio

這是我的代碼。

<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 
} 

謝謝。

+0

你有沒有機會使用jQuery或可以在你的代碼中使用? –

+0

如果您只有兩個按鈕,這將幫助您:http://stackoverflow.com/questions/1423777/how-can-i-check-if-a-radio-button-is-selected-in-javascript –

回答

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; 
} 

和元素的ID必須是不同的。

+2

它最好命名爲* getCheckedRadioValue *,因爲它不會返回無線電HTML標識符,因爲它可能會提示! –

+0

@ sorx00 AFAICT'++ i'會跳過第一次出現,但我更喜歡'i ++' – metaleap

+0

@metaleap我不這麼認爲 http://stackoverflow.com/questions/3469885/somevariable-vs -somevariable式的JavaScript – sorx00

-1

下面是jQuery的實現來獲得一個單選按鈕的值

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

如果要使用JavaScript,然後:

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() 

將讓你的價值所選的選項當然可以分配給一個變量。由於警告,我還應該指出,這是jquery,一個方便的JavaScript庫,用於簡化DOM操作並提供出色的跨瀏覽器兼容性。它可以被發現here

+0

OP沒有說任何關於jQuery的東西。 –

+2

是的,但jquery是javascript。 – kinakuta

+2

@kinakuta:那麼?如果一個問題只用'javascript'標記,你應該假定不應該使用其他庫。如果你使用一個,你應該在你的答案中清楚地說明並鏈接到它。 –

0

你不應該有兩個具有相同ID的無線電元件。您需要更改其中一個ID然後檢查這兩個單選按鈕,如:

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

我會建議使用jQuery來做到這一點,而不是原生js。

+2

沒有理由加載所有的jQuery時的幾行代碼就足夠了 – jsonnull

+0

同意我得到一點點因爲當我認爲js我認爲jquery的時候,這取決於具體情況。 –

+0

你爲什麼要比較布爾值和真值? 'if(document.getElementById(「u_type」)。checked)' –

1

除了kmb385的建議,您可以將輸入封裝在表單中,並確保所有輸入名稱不同(您有兩個u_type)名稱。

然後你可以訪問輸入爲document.formname.inputname.checked,這將返回true或false。

6

要獲得檢查單選按鈕的價值,沒有jQuery的:

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

(假設selectedValue在別處聲明的變量)