如何校验表单多个复选框是否至少存在一个选中项
问题根因
你当前的代码有两处问题导致运动校验逻辑失效,甚至打断整个校验流程:
- 语法错误:JS 不支持
document.userForm.Sport[]这种写法,当表单元素的 name 包含[]这类特殊字符时,不能直接通过点操作符访问,必须使用方括号访问语法 - 逻辑错误:运动选项是多个复选框组成的节点集合,不能直接读取
.value属性获取选中结果,需要遍历集合判断是否存在选中项
修复后的代码
将你的 upassword 函数替换为以下代码即可:
function upassword(){ var a=document.userForm.Password.value; var b=document.userForm.RPassword.value; var c=document.userForm.Gender.value; var e=document.userForm.User.value; // 获取所有运动复选框节点 var sportChecks = document.userForm['Sport[]']; var selectedSportCount = 0; // 遍历统计选中的运动数量 for(var i=0; i<sportChecks.length; i++){ if(sportChecks[i].checked) selectedSportCount++; } if(c=="") { alert("Please Select Gender!"); return false; } else if(e=="") { alert("Please Select User Type!"); return false; } else if(selectedSportCount == 0) { alert("Please Select Sport!"); return false; } else if(a!=b) { alert("Passsword Mismatch!"); return false; } else { return true; } }
内容的提问来源于stack exchange,提问作者Ajitha Malkanthi
相关产品推荐
相关产品推荐

