2012-01-25 471 views
10

我有一個名爲category的變量,它必須根據所選的單選按鈕更改其值。問題在於,我無法單擊單選按鈕或其他按鈕,值會立即發生變化。JQuery更改單選按鈕的值

這是我的代碼:

<form> 
<input type="radio" name="category" value="doctor" /> Doctor 
<input type="radio" name="category" value="police" checked /> Policia 
</form> 

var category = $('[name="category"]:checked').val(); 

我需要當您單擊單選按鈕,您可以自動改變變量category的價值。

回答

13

你需要每一個用戶更改選定的單選按鈕的時間來改變類的值。因此,當用戶點擊收音機時,您需要觸發一個事件。您可以檢查出FIDDLE

var category = null; 
$("input[name='category']").click(function() { 
    category = this.value; 
}); 
1

我想你需要簡單地是這樣的:

var category; 

    $('radio[name="category"]').click(function(){ 
     category=this.value; 
    }); 
+0

我認爲使用「更改」事件更好,它比「點擊」更通用。 – T30

1

而不是使用category變量使用$('[name="category"]:checked').val(),無論你想選中的單選按鈕的值。否則,您可以利用changeclick事件將checked單選按鈕值設置爲category變量。

+0

這是一個直接的方法,而不是實現'change'事件。 – Peter

34

附加一個事件處理程序的change事件:

$(':radio[name="category"]').change(function() { 
    var category = $(this).filter(':checked').val(); 
}); 
+3

你想使用'change'事件,就像這個答案所說的,而不是其他人建議的'click'。即使用戶使用鍵盤導航和選擇單選按鈕,使用「更改」可確保更新值。 – idrumgood

+0

這個問題顯然是「onclick」,而不是更改 – albanx

+2

@albanx:只有單擊按鈕(即使它被禁用),「click」將只會觸發。當值改變時(不管方法如何,無論是鍵盤還是鼠標)發生「變化」,如果它被禁用則不會發生。 – Blender

1
var category; 
    $(':radio[name="category"]').change(function() { 
     category=this.value; 
    }); 

而這是一個jsfiddle.net演示。

1

你不應該給一個以上的元素相同的ID,你應該使用類,而不是像這樣:

<form> 
    Option 1<input type="radio" name="opt" class="radio" value="Option 1"> 
    Option 2<input type="radio" name="opt" class="radio" value="Option 2"> 
</form> 

代替:

<form> 
    Option 1<input type="radio" name="opt" id="radio" value="Option 1"> 
    Option 2<input type="radio" name="opt" id="radio" value="Option 2"> 
</form> 

和你的代碼仍然是相同的,並它應該工作正常:)