2012-01-25 245 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> 

和你的代码仍然是相同的,并它应该工作正常:)