0

我有一个单选输入,在页面其他地方的一个按钮上,我检查它是否被选中,并将选中的值更改为开或关。

输入看起来像:

<input type="radio" name="send" value="1"  checked="true" />

或者

<input type="radio" name="send" value="1"  />

我有相当简单的 jQuery 来做检查:

$input = $('input[name=send]');

if( $input.is(":checked") ) 
{
    $input.attr("checked", false);
}
else
{
    $input.attr("checked", true);
}   

问题是,如果页面加载并检查了输入,出于某种原因,我需要单击按钮两次,然后才能识别语句的 else 部分。

如果页面以未选中的输入开始,那么在第一次单击按钮时,它会按预期工作。然后每次点击都有效。但如果检查输入,则不是初始负载。

将输入标记为已检查的正确方法是什么?

如何在 input[type=radio] 上执行正确的 if / else 语句以查看它是否被检查?

4

4 回答 4

3

使用prop()来访问checked属性checkbox而不是 attr,它发生在我的 jQuery 1.9 上,它适用于 jQuery 1.8.3,但使用 prop() 更好

if( $input.is(":checked") ) 
{
    $input.prop("checked", false);
}
else
{
    $input.prop("checked", true);
}   

正如@Álvaro G. Vicario 所说,您可以使用if( $input.prop("checked") )

于 2013-04-03T09:19:45.667 回答
2

改用.prop()

$input.prop("checked", false/true);

所以在你的代码中:

if($input.is(":checked")){
    $input.prop("checked", false);
}else{
    $input.prop("checked", true);
}
于 2013-04-03T09:20:14.890 回答
2

checked是复选框的属性,因此请使用.prop()而不是.attr().

checked无论其值如何,该属性的存在都会检查复选框。

于 2013-04-03T09:21:01.793 回答
2

这很可能是您想要的。

$input.prop('checked', function(i, oldVal){
    return !oldVal;
});

你正在处理两个单选按钮......所以这会起作用。

于 2013-04-03T09:28:59.737 回答