我必须验证是否检查了radiobox。
HTML
<input style="width:20px;" id="radio1" type="radio" name="benvoor" class="benvoor" value="Ik ben voor" /> <label for="radio1">Ik ben voor. </label><br />
<input style="width:20px;" id="radio2" type="radio" name="benvoor" class="benvoor" value="Ik ben tegen" /> <label for="radio2">Ik ben tegen.</label>
的JavaScript / jQuery的
//Assume no radio checked first
var benvoor = false;
for (i in aanmeldform.benvoor) {
// Is the element checked?
if (aanmeldform.benvoor[i].checked) {
//Choice has been made
benvoor = true;
// Cancel the loop if the checked element is found
break;
}
}
// If no choice has been made, put it in the errorList
if (!benvoor) errorList.push("benvoor");
// Cancel submit if errors are found
if (errorList.length > 0) {
document.getElementById("errorMessage").innerHTML = "Graag uw keuze maken";
$("#radiobutton label").addClass("rood");
$("html, body").animate({
scrollTop: $(this).offset().top
}, 1000);
return false;
}
答案 0 :(得分:2)
鉴于您正在使用jQuery,您可以这样做:
if ($(':radio[name="benvoor"]:checked').length === 0) {
// none are checked, do something
}
也就是说,查找所有已检查的名称的单选按钮,如果生成的jQuery对象的长度为0,则不会检查任何按钮。
简单演示:http://jsfiddle.net/WKKby/
你没有显示很多你的html,但是从你的JS看来,单选按钮位于一个id为“radiobutton”的元素中,所以你可能希望将它包含在你的jQuery选择器中:
if ($('#radiobutton :radio[name="benvoor"]:checked').length === 0) {
答案 1 :(得分:1)
如果您正在使用jquery,可能会使用@nnnnnn答案,但是您的代码在jsFiddle中稍作修改:http://jsfiddle.net/p9bs3/5/
var benvoor = false;
for (var i =0;i < aanmeldform.benvoor.length;i++) {
// Is the element checked?
if (aanmeldform.benvoor[i].checked) {
//Choice has been made
benvoor = true;
// Cancel the loop if the checked element is found
break;
}
}
似乎IE处理的formcollections与常规数组不同。以下代码在chrome和IE中生成两个不同的结果。
<form id="frm">
<input type="radio" name="rdio">
<input type="radio" name="rdio">
</form>
脚本:
var arr = [1,2];
for(i in arr){
console.log(i);
}
console.log('-----');
for(i in frm.rdio){
console.log(i);
}
<强>铬强>
0
1
-----
0
1
length
item
<强> IE 强>
0
1
------------
rdio
length
item
namedItem
对于in循环来说,通常会导致javascript imo出现问题,使用jquery各自的帮助器或者执行常规for循环,就像上面的例子中一样。