在HTML中选择至少一个选项

时间:2015-04-01 03:24:18

标签: javascript html

情况:我想创建一个简单的代码,用户必须至少选择一个扩展才能继续。用户应选择至少一个或多个扩展名,否则将显示警告消息。

问题:问题是,如果只有一个可用的扩展名可供选择,无论是否被选中,都会出现警告消息,不允许注册完成。

//Select atleast one extension 
 var arrCheckboxes = document.checkForm.elements["product"];
    var checkCount = 0;
    for (var i = 0; i < arrCheckboxes.length; i++) {
        checkCount += (arrCheckboxes[i].checked) ? 1 : 0;
    }
    if (checkCount > 0){
        return true;
    } else {
        alert("Select at least one Extension.");
        return false;
    }

1 个答案:

答案 0 :(得分:0)

从浏览器的早期阶段开始,如果只有一个表单控件的名称为 product ,那么这是遗产:

document.checkForm.elements["product"]; 

将返回对该控件的引用,而不是您期望的集合。默认情况下,此类控件没有 length 属性:

arrCheckboxes.length

返回 undefined

i < arrCheckboxes.length

为false,因此永远不会输入循环。

要解决此问题,请使用 querySelectorAll ,它始终返回一个集合:

var arrCheckboxes = document.checkForm.querySelectorAll('[name=product]');

在IE 8+和其他任何地方都受支持。一个更简单的代码版本(假设它在函数体中):

var arrCheckboxes = document.checkForm.querySelectorAll('[name=product]');

for (var i = 0; i < arrCheckboxes.length; i++) {
    if (arrCheckboxes[i].checked) return true;
}
alert("Select at least one Extension.");
return false;