如何在jQuery中重置单选按钮,以便不选中任何单选按钮
我有如下HTML单选按钮:如何在jQuery中重置单选按钮,以便不选中任何单选按钮,jquery,forms,Jquery,Forms,我有如下HTML单选按钮: <td> <input id="radio1" type="radio" name="correctAnswer" value="1">1</input> <input id="radio2" type="radio" name="correctAnswer" value="2">2</input> <input id="radio3" type="radio" name="co
<td>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>
我在IE 6中执行此操作。为什么不执行以下操作:
$("#radio1, #radio2, #radio3, #radio4").checked = false;
在jQuery 1.6之前的版本中,请使用:
$('input[name="correctAnswer"]').attr('checked', false);
在1.6之后的jQuery版本中,应使用:
$('input[name="correctAnswer"]').prop('checked', false);
但是,如果您使用的是1.6.1+,则可以使用第一种形式(参见下面的注释2)
注1:第二个参数必须是false而不是“false”,因为“false”不是假值。i、 e
if ("false") {
alert("Truthy value. You will see an alert");
}
注2:从jQuery 1.6.0开始,现在有两种类似的方法,.attr
和.prop
,它们做两件相关但略有不同的事情。如果在这种特殊情况下,如果使用1.6.1+,则上述建议有效。上述内容不适用于1.6.0,如果您使用的是1.6.0,则应升级。如果你想了解细节,请继续阅读
详细信息:在使用纯HTML DOM元素时,DOM元素会附加一些属性(已选中、类型
、值
等),这些属性为HTML页面的运行状态提供了一个接口。还有.getAttribute
/.setAttribute
接口,该接口提供对HTML中提供的HTML属性值的访问。在1.6版本之前,jQuery提供了一种方法,.attr
,用于访问这两种类型的值,从而模糊了两者之间的区别。jQuery1.6+提供了两种方法,.attr
和.prop
来区分这些情况
.prop
允许您设置DOM元素的属性,而.attr
允许您设置HTML属性值。如果使用普通DOM并将checked属性elem.checked
设置为true
或false
,则会更改运行值(用户看到的内容),返回的值跟踪页面状态elem.getAttribute('checked')
但是只返回初始状态(并根据HTML中的初始状态返回'checked'
或undefined
)。在1.6.1+中,使用.attr('checked',false)
可以同时执行elem.removeAttribute('checked')
和elem.checked=false
,因为更改会导致很多向后兼容性问题,并且无法真正判断您是想要设置HTML属性还是DOM属性。有关详细信息,请参见。您的问题是属性选择器不是以@
开头的
试试这个:
$('input[name="correctAnswer"]').attr('checked', false);
通过jquery检查的单选按钮集:
<div id="somediv" >
<input type="radio" name="enddate" value="1" />
<input type="radio" name="enddate" value="2" />
<input type="radio" name="enddate" value="3" />
</div>
在jquery中设置单选按钮状态的最佳方法:
HTML:
在Jquery 1.6+代码中,首选.prop()方法:
var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").prop("checked",true);
要取消选择按钮,请执行以下操作:
$("[name=color]").removeAttr("checked");
最后经过大量的测试,我认为最方便、最有效的预置方式是:
var presetValue = "black";
$("input[name=correctAnswer]").filter("[value=" + presetValue + "]").prop("checked",true);
$("input[name=correctAnswer]").button( "refresh" );//JQuery UI only
JQueryUI对象需要刷新
检索值很容易:
alert($('input[name=correctAnswer]:checked').val())
使用jQuery1.6.1和jQueryUI1.8进行测试。其中有:
在value=“1”之后,您也可以只添加未选中的=“false”/>
然后,线路将是:
<input type="radio" name="enddate" value="1" unchecked =" false" />
将所有单选按钮设置回默认值:
$("input[name='correctAnswer']").checkboxradio( "refresh" );
如果要清除DOM中的所有单选按钮:
$('input[type=radio]').prop('checked',false)代码>
条形图
饼图
数据点图
$(“#无线电输入”).removeAttr('checked');
//刷新jQuery UI按钮集。
$(“#收音机”).buttonset(‘刷新’);
我知道这是一个老问题,这有点离题,但假设您只想取消选中集合中的特定单选按钮:
$(“#go”)。单击(函数(){
$(“输入[name='correctAnswer']”)。每个(函数(){
如果($(this.val()!=“1”){
$(this).prop(“选中”,false);
}
});
});代码>
1.
2.
3.
4.
虽然prop更改了选中状态,但更改也显示在表单中
$('input[name="correctAnswer"]').prop('checked', false).change();
您不能只在从jQuery调用返回的数组上设置checked属性,必须使用attr()函数在数组中的项上设置该属性。这并不能使“未选中”成为“未选中”。对于第二个参数,传递false而不是“false”很重要因为第二个参数很重要,因为第二个参数是要设置的值。如果第二个参数为空,则表示为我提供与选择器匹配的第一个元素的值。@Noldorin-“Truthy”是一个非常复杂的词。(你能建议一种更好的表达“真实”概念的方式吗?只用一个词?)嘿,也许很公平。我们都可能明白这一点,尽管我个人更喜欢更正式的“真实”或“语义真实”。@Noldorin“Truthy”和“falsy”是许多Javascript专家使用的术语,包括和。关键术语是falsy,因为。Truthy是falsy对立面的逻辑名称。我认为使用falsy是故意让你觉得这可能不是你所习惯的(特别是如果来自其他C风格语法语言,0为false)。如果@lamback的答案对你不起作用,请查看JQuery网站上的bug跟踪器[。如果你是(就像我一样…)循环通过一组单选按钮尝试将它们全部重置为默认值,#(选择器).prop('checked',true)当尝试将同一组中的后续单选按钮设置为未选中状态时,
失败。诀窍是仅将单选按钮设置为选中状态,并让单选按钮组执行其操作(取消选中其他…。此外,调用$(选择器)。单击();
工作,并将触发任何关联事件。嘿,我认为您的答案不完整。函数checkboxradio()未在jQuery 2.x中定义。这是您使用的扩展吗?
var presetValue = "black";
$("input[name=correctAnswer]").filter("[value=" + presetValue + "]").prop("checked",true);
$("input[name=correctAnswer]").button( "refresh" );//JQuery UI only
alert($('input[name=correctAnswer]:checked').val())
<input type="radio" name="enddate" value="1" unchecked =" false" />
$("input[name='correctAnswer']").checkboxradio( "refresh" );
<div id="radio">
<input type="radio" id="radio1" name="radio"/><label for="radio1">Bar Chart</label>
<input type="radio" id="radio2" name="radio"/><label for="radio2">Pie Chart</label>
<input type="radio" id="radio3" name="radio"/><label for="radio3">Datapoint Chart</label>
</div>
$('#radio input').removeAttr('checked');
// Refresh the jQuery UI buttonset.
$( "#radio" ).buttonset('refresh');
$('input[name="correctAnswer"]').prop('checked', false).change();