javascript - 确保至少选中一个复选框

标签 javascript html checkbox

我有一个包含多个复选框的表单,我想使用 JavaScript 来确保至少选中一个。这就是我现在所拥有的,但无论选择什么,都会弹出一个警告。

JS (wrong)

function valthis(){
 if (document.FC.c1.checked) {
   alert ("thank you for checking a checkbox")
  } else  {
   alert ("please check a checkbox")
  }
}

HTML

<p>Please select at least one Checkbox</p>
<br>
<br>
<form name = "FC">
<input type = "checkbox" name = "c1" value = "c1"/> C1 
<br>
<input type = "checkbox" name = "c1" value = "c2"/> C2
<br>
<input type = "checkbox" name = "c1" value = "c3"/> C3
<br> 
<input type = "checkbox" name = "c1" value = "c4"/> C4 
<br>
</form>
<br>
<br>

<input type = "button" value = "Edit and Report" onClick = "valthisform();">

So what I ended up doing in JS was this:

function valthisform(){
 var chkd = document.FC.c1.checked || document.FC.c2.checked||document.FC.c3.checked|| document.FC.c4.checked

 if (chkd == true){

 } else {
    alert ("please check a checkbox")
 }

}

我决定放弃“谢谢”部分以适应作业的其余部分。非常感谢,每个人的建议都帮了大忙。

最佳答案

如果您打算像 document.FC.c1 一样引用它们,则应避免使用两个同名的复选框。如果您有多个名为 c1 的复选框,浏览器将如何知道您指的是哪个?

这是一个非 jQuery 解决方案,用于检查页面上是否有任何复选框被选中。

var checkboxes = document.querySelectorAll('input[type="checkbox"]');
var checkedOne = Array.prototype.slice.call(checkboxes).some(x => x.checked);

您需要 Array.prototype.slice.call 部分将 document.querySelectorAll 返回的 NodeList 转换成一个数组,您可以调用一些

关于javascript - 确保至少选中一个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787665/

相关文章:

vba - 如果语句在 Excel VBA 中不起作用

带有微调器和复选框的 Android Listview

javascript - 检测复选框在 Angular.js ng-change 事件中是否被选中或未被选中

javascript - 调用ajax时加载图像仅显示一次

javascript - 确定是否选中了 jQuery 对象中的所有复选框,返回为 boolean 值

javascript - 如何移动 Bootstrap 导航 Logo ?

javascript - 使用动态数据向 highcharts 图表添加不同的符号

具有不同大小框的 HTML/CSS 网格布局?

html - 仅为 Safari 浏览器添加一个选择选项

html - 在 IE7 中的表格中显示背景的一个像素