如何重置jQuery中的单选button,以便没有选中
我有这样的HTML单选button:
<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>
这是一个表单标签,当用户提交表单时,我想让所有单选button恢复为默认状态。 意思都没有检查。
我有这个代码,但它给出了一个错误,说[0] is null or not an object
$('input[@name="correctAnswer"]')[0].checked = false; $('input[@name="correctAnswer"]')[1].checked = false; $('input[@name="correctAnswer"]')[2].checked = false; $('input[@name="correctAnswer"]')[3].checked = false;
我在IE 6中这样做。
在1.6之前版本的jQuery中使用:
$('input[name="correctAnswer"]').attr('checked', false);
在1.6以后的版本中,你应该使用:
$('input[name="correctAnswer"]').prop('checked', false);
但是如果您使用的是1.6.1+,则可以使用第一种forms(请参见下面的注2)。
注1:重要的是第二个参数是false而不是“false”,因为“false”不是一个虚假值。 即
if ("false") { alert("Truthy value. You will see an alert"); }
注2:从jQuery 1.6.0开始,现在有两个类似的方法, .attr
和.prop
做了两个相关但略有不同的事情。 如果在这种特殊情况下,如果您使用1.6.1+,则build议提供上述工作。 以上不能用于1.6.0,如果你使用的是1.6.0,你应该升级。 如果你想要的细节,请继续阅读。
详细信息:使用直线HTML DOM元素时,DOM元素( checked
, type
, value
等)会附加属性,它们提供了HTML页面运行状态的接口。 还有.getAttribute
/ .setAttribute
接口,它提供对HTML中提供的HTML属性值的访问。 在1.6之前,jQuery通过提供一种方法来区分这种区别,即.attr
,来访问这两种types的值。 jQuery 1.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属性。 请参阅.prop文档中的更多信息。
在jQuery中设置单选button状态的最佳方法是:
HTML:
<input type="radio" name="color" value="orange" /> Orange <input type="radio" name="color" value="pink" /> Pink <input type="radio" name="color" value="black" /> Black <input type="radio" name="color" value="pinkish purple" /> Pinkish Purple
Jquery(1.4+)代码预先select一个button:
var presetValue = "black"; $("[name=color]").filter("[value='"+presetValue+"']").attr("checked","checked");
在Jquery 1.6+代码中.prop()方法是首选:
var presetValue = "black"; $("[name=color]").filter("[value='"+presetValue+"']").prop("checked",true);
取消selectbutton:
$("[name=color]").removeAttr("checked");
你的问题是,属性select器不是以@
开始的。
尝试这个:
$('input[name="correctAnswer"]').attr('checked', false);
$('#radio1').removeAttr('checked'); $('#radio2').removeAttr('checked'); $('#radio3').removeAttr('checked'); $('#radio4').removeAttr('checked'); Or $('input[name="correctAnswer"]').removeAttr('checked');
最后经过很多testing,我认为最方便有效的预置方式是:
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())
testing了JQuery 1.6.1,JQuery UI 1.8。
单选button设置通过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代码:
$('div#somediv input:radio:nth(0)').attr("checked","checked");
如果你想清除DOM中的所有单选button:
$('input[type=radio]').prop('checked',false);
<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');
我知道这是旧的,这是一个小题目,但假设你想取消只在集合中的特定单选button:
$("#go").click(function(){ $("input[name='correctAnswer']").each(function(){ if($(this).val() !== "1"){ $(this).prop("checked",false); } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <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> <input type="button" id="go" value="go">
将所有单选button设回默认值:
$("input[name='correctAnswer']").checkboxradio( "refresh" );
你有什么地方: <input type="radio" name="enddate" value="1" />
值=“1”之后,你也可以添加unchecked =" false" />
这条线将是:
<input type="radio" name="enddate" value="1" unchecked =" false" />
你为什么不做:
$("#radio1, #radio2, #radio3, #radio4").checked = false;