我有一个收音机输入,并在页面上的其他位置按钮上,检查是否已选中,并将选中的值更改为开启或关闭。
输入如下:
<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部分之前单击该按钮两次。
如果页面以未选中的输入开头,则在第一次单击该按钮时,它将按预期工作。然后每次点击都有效。但是,如果检查输入,则不是初始加载。
将输入标记为已检查的正确方法是什么?
如何在输入[type = radio]上完成正确的if / else语句以查看它是否已被检查?
答案 0 :(得分:3)
使用prop()来访问checked
checkbox
的{{1}}属性,而不是attr,它发生在jQuery 1.9上,它适用于jQuery 1.8.3,但最好使用prop()
if( $input.is(":checked") )
{
$input.prop("checked", false);
}
else
{
$input.prop("checked", true);
}
正如@ÁlvaroG。Vicario所说,你可以使用if( $input.prop("checked") )
答案 1 :(得分:2)
改为使用.prop()
:
$input.prop("checked", false/true);
所以在你的代码中:
if($input.is(":checked")){
$input.prop("checked", false);
}else{
$input.prop("checked", true);
}
答案 2 :(得分:2)
checked
是复选框的属性,因此请使用.prop()
代替.attr()
。
checked
属性的存在会检查复选框,无论其值如何。
答案 3 :(得分:2)
这很可能是你想要的。
$input.prop('checked', function(i, oldVal){
return !oldVal;
});
你正在处理两个单选按钮......所以这将有效。