如何重置jQuery中的radiobuttons,以便不检查任何

131 forms jquery

我在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="correctAnswer" value="3">3</input>
    <input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>
Run Code Online (Sandbox Code Playgroud)

这是一个表单标记,当用户提交表单时,我想让所有单选按钮恢复为默认值.意思是没有人检查过.

我有这个代码,但它给出了一个错误说 [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;
Run Code Online (Sandbox Code Playgroud)

我在IE 6中这样做.

lam*_*cck 262

在1.6之前的jQuery版本中使用:

$('input[name="correctAnswer"]').attr('checked', false);
Run Code Online (Sandbox Code Playgroud)

在1.6之后的jQuery版本中你应该使用:

$('input[name="correctAnswer"]').prop('checked', false);
Run Code Online (Sandbox Code Playgroud)

但如果您使用的是1.6.1+,则可以使用第一种形式(参见下面的注释2).

注1:重要的是第二个参数为而不是"假",因为"假"不是假值.即

if ("false") {
    alert("Truthy value. You will see an alert");
}
Run Code Online (Sandbox Code Playgroud)

注2:在jQuery 1.6.0中,现在有两个类似的方法,.attr.prop认为做两个相关但略有不同的东西.如果在这种特殊情况下,如果您使用1.6.1+,则上述建议可以使用.以上不适用于1.6.0,如果你使用1.6.0,你应该升级.如果您需要详细信息,请继续阅读.

详细说明:当与直HTML DOM元素工作,也有附加到DOM元素属性(checked,type,value等),其提供到HTML页面的运行状态的接口.还有.getAttribute/ .setAttributeinterface提供对HTML中提供的HTML属性值的访问.1.6之前,jQuery通过提供一种方法.attr来模糊区别,以访问两种类型的值.jQuery的1.6 +提供了两种方法,.attr.prop得到这些情况加以区分.

.prop允许您在DOM元素上设置属性,同时.attr允许您设置HTML属性值.如果您正在使用普通的DOM工作,选中的属性设置,elem.checkedtruefalse更改运行值(用户所看到的),并返回值在页面状态轨道.elem.getAttribute('checked')但是只返回初始状态(并返回'checked'undefined取决于HTML的初始状态).在1.6.1+中使用.attr('checked', false)两者elem.removeAttribute('checked')并且elem.checked = false由于更改导致了许多向后兼容性问题,并且无法确定是否要设置HTML属性或DOM属性.请参阅.prop文档中的更多信息.

  • @Noldorin"Truthy"和"falsy"是许多Javascript专家使用的术语,包括[Brendan Eich](http://brendaneich.com/2008/08/tracemonkey-javascript-lightspeed/)和[Douglass Crockford](http: //javascript.crockford.com/style2.html).关键术语是假的,因为[布尔评估由6个虚假值定义](http://www.sitepoint.com/javascript-truthy-falsy/).Truthy是与falsy相反的逻辑名称.我认为使用falsy是故意用来让你认为这可能不是你习惯的(特别是如果来自其他C风格的语法语言,其中0为假). (3认同)

小智 53

在jquery中设置radiobutton状态的最佳方法:

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
Run Code Online (Sandbox Code Playgroud)

Jquery(1.4+)代码预先选择一个按钮:

var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").attr("checked","checked");
Run Code Online (Sandbox Code Playgroud)

在Jquery 1.6+代码中,首选.prop()方法:

var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").prop("checked",true);
Run Code Online (Sandbox Code Playgroud)

要取消选择按钮:

$("[name=color]").removeAttr("checked");
Run Code Online (Sandbox Code Playgroud)


bdu*_*kes 10

您的问题是属性选择器不以a开头@.

试试这个:

$('input[name="correctAnswer"]').attr('checked', false);
Run Code Online (Sandbox Code Playgroud)