如何重置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元素( checkedtypevalue等)会附加属性,它们提供了HTML页面运行状态的接口。 还有.getAttribute / .setAttribute接口,它提供对HTML中提供的HTML属性值的访问。 在1.6之前,jQuery通过提供一种方法来区分这种区别,即.attr ,来访问这两种types的值。 jQuery 1.6+提供了两种方法, .attr.prop来区分这些情况。

.prop允许您在DOM元素上设置属性,而.attr允许您设置HTML属性值。 如果您正在使用纯DOM,并将checked属性elem.checked设置为truefalse可以更改运行值(用户可以看到的内容),并返回值以跟踪页面状态。 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;