如何重置jQuery中的单选按钮,以便不检查任何单选按钮

时间:2009-06-10 17:45:25

标签: jquery html-form

我有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>

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

我有这段代码,但是它提出错误[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中这样做。

13 个答案:

答案 0 :(得分:255)

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

$('input[name="correctAnswer"]').attr('checked', false);

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

$('input[name="correctAnswer"]').prop('checked', false);

但如果您使用的是1.6.1+,则可以使用第一种形式(参见下面的注释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+,则上述建议可以使用。以上不适用于1.6.0,如果你使用1.6.0,你应该升级。如果您需要详细信息,请继续阅读。

详细信息:使用直接HTML DOM元素时,DOM元素(checkedtypevalue等)附加了一些属性,提供HTML页面运行状态的接口。还有.getAttribute / .setAttribute接口,可以访问HTML中提供的HTML属性值。在1.6之前,jQuery通过提供一种方法.attr来模糊区别,以访问这两种类型的值。 jQuery 1.6+提供了两种方法.attr.prop来区分这些情况。

.prop允许您在DOM元素上设置属性,而.attr则允许您设置HTML属性值。如果您正在使用纯DOM并将选中的属性elem.checked设置为truefalse,则更改运行值(用户看到的内容)并返回值跟踪页面州。但是elem.getAttribute('checked')只返回初始状态(并返回'checked'undefined,具体取决于HTML中的初始状态)。在1.6.1+中使用.attr('checked', false)执行elem.removeAttribute('checked')elem.checked = false,因为更改导致了许多向后兼容性问题,并且它无法确定您是否要设置HTML属性或DOM属性。请参阅documentation for .prop

中的详细信息

答案 1 :(得分:52)

在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

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

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);

取消选择按钮:

$("[name=color]").removeAttr("checked");

答案 2 :(得分:10)

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

试试这个:

$('input[name="correctAnswer"]').attr('checked', false);

答案 3 :(得分:4)

$('#radio1').removeAttr('checked');
$('#radio2').removeAttr('checked');
$('#radio3').removeAttr('checked');
$('#radio4').removeAttr('checked');

Or

$('input[name="correctAnswer"]').removeAttr('checked');

答案 4 :(得分:4)

经过大量测试后,我认为最方便有效的预设方法是:

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())

使用JQuery 1.6.1,JQuery UI 1.8进行测试。

答案 5 :(得分:2)

我知道这是旧的,这有点偏离主题,但假设您只想取消选中集合中的特定单选按钮:

$("#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">

如果你正在处理radiobutton列表,你可以使用:checked选择器来获得你想要的那个。

$("#go").click(function(){
  $("input[name='correctAnswer']:checked").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">

答案 6 :(得分:0)

通过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");

答案 7 :(得分:0)

如果要清除DOM中的所有单选按钮:

$('input[type=radio]').prop('checked',false);

答案 8 :(得分:0)

<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');

答案 9 :(得分:0)

尽管prop更改了检查状态,但更改也以表格形式显示。

$('input[name="correctAnswer"]').prop('checked', false).change();

答案 10 :(得分:-1)

您所拥有的位置:<input type="radio" name="enddate" value="1" />

在值=“1”之后,您还可以添加unchecked =" false" />

该行将是:

<input type="radio" name="enddate" value="1" unchecked =" false" />

答案 11 :(得分:-1)

将所有单选按钮恢复为默认值:

$("input[name='correctAnswer']").checkboxradio( "refresh" );

答案 12 :(得分:-3)

你为什么不这样做:

$("#radio1, #radio2, #radio3, #radio4").checked = false;