每当单击“删除”按钮而不选择任何“复选框”时,它会给出验证 - 适当的 只要选中复选框并单击按钮,它也会显示验证。 我哪里错了?
<tr>
<td>
<input type='checkbox' name='check1' value = '80'>Q- 80. Statute of Liberty is in ?
</td>
</tr>
<tr>
<td>
<input type='checkbox' name='check1' value = '64'>Q- 64. National Animal ?
</td>
</tr>
<tr>
<td>
<input type='checkbox' name='check1' value = '65'>Q- 65. Popular language
</td>
</tr>
<tr>
<td>
<input type='checkbox' name='check1' value = '63'>Q- 63. Largest Ocean ?
</td>
</tr>
JS:
function Checked(){
var chk=false;
if (document.myForm.check1.checked){
chk=true;
return chk;
} else {
alert("Please select Checkbox");
return chk;
}
}
我的函数调用:
<input type="submit" name="delete" formmethod='post' formaction='/~xyz/cgi-bin/Project/CheckDelete.py' value="Delete" onclick="return Checked()">
答案 0 :(得分:0)
document.myForm.check1.checked
正如@CBroe所建议的那样,这句话没有效果,因为你有多个复选框。
所以你需要迭代。
var d = document.myForm.check1;
var arr = 0;
for (var i = 0; i < d.length; i++) {
if (d[i].checked) {
arr++;
}
}
这里我创建了一个变量arr
,当选中一个复选框时,变量会增加。
最后我会检查
if (arr != 0) return true;
else {
alert("Please select Checkbox");
return false;
}
最后,
function Checked() {
var d = document.myForm.check1;
var arr = 0;
for (var i = 0; i < d.length; i++) {
if (d[i].checked) {
arr++;
}
}
if (arr != 0) return true;
else {
alert("Please select Checkbox");
return false;
}
}
中查看此内容
答案 1 :(得分:0)
由于您有多个具有该名称的输入字段,document.myForm.check1
将是 NodeList ,并且没有checked
属性。
您要执行的操作是通过复选框循环,并单独检查其状态。如果在该循环中遇到一个被检查的循环,则可以通过返回true
离开循环,否则在循环后返回false
。