我有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中这样做。
答案 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元素(checked
,type
,value
等)附加了一些属性,提供HTML页面运行状态的接口。还有.getAttribute
/ .setAttribute
接口,可以访问HTML中提供的HTML属性值。在1.6之前,jQuery通过提供一种方法.attr
来模糊区别,以访问这两种类型的值。 jQuery 1.6+提供了两种方法.attr
和.prop
来区分这些情况。
.prop
允许您在DOM元素上设置属性,而.attr
则允许您设置HTML属性值。如果您正在使用纯DOM并将选中的属性elem.checked
设置为true
或false
,则更改运行值(用户看到的内容)并返回值跟踪页面州。但是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;