javascript - 在 HTML 中至少选择一个选项

标签 javascript html

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

问题:问题是,如果只有 1 个分机可供选择,无论是否选择,都会出现警告消息,不允许完成注册。

//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;
    }

最佳答案

这是浏览器早期的遗留问题,如果只有一个名为 product 的表单控件,那么:

document.checkForm.elements["product"]; 

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

arrCheckboxes.length

返回未定义

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;

关于javascript - 在 HTML 中至少选择一个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29382339/

相关文章:

c# - 如何使用 JavaScript 和 ASP.NET MVC 更新图像?

javascript - getOrgChart 未定义错误

javascript - 如何从列表中删除重复项

html - 防止 Bootstrap Modal 在单击外部或按 Escape 时消失?

html - 简单的 HTML 问题

html - 如何水平对齐 Bootstrap 缩略图

javascript - 如何使用 html 和 css 在文本框内添加垂直线

javascript - 为什么我的递归函数调用没有返回值?

javascript - Angular 2中的日期转换CST

javascript - 如何使用 JSON 转换和传输 PHP 变量数据到 HTML 页面的 Javascript