【发布时间】:2014-07-02 01:01:48
【问题描述】:
在包含两个表单的页面上,我需要一个脚本,该脚本将仅验证正在提交的表单。 我做了一个简单的页面来显示问题
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
function validateForm() {
var checks = document.getElementsByName("tjek");
var checksChecked = false;
var i = 0;
while (!checksChecked && i < checks.length) {
if (checks[i].checked) checksChecked = true;
i++;
}
if (!checksChecked) {
alert("Select something!")
return false;
}
}
</script>
</head>
<body>
<form onSubmit='return validateForm()' action="" method="get">
<input name="tjek" type="checkbox" value="" />
<input name="" type="submit" />
</form>
<form onSubmit='return validateForm()' action="" method="get">
<input name="tjek" type="checkbox" value="" />
<input name="" type="submit" />
</form>
</body>
</html>
http://jsbin.com/duqotobi/1/edit
但它不起作用。为什么?
【问题讨论】:
-
定义“不起作用”?您还应该在例如jsbin.com。并添加一个文档类型。
-
您能详细说明什么“不起作用”吗?
-
我提交了第一个表单并且未选中该复选框,它给了我一个应有的警报。但是如果第二种形式的复选框被选中,它不会发出警报。因此,出于某种原因,脚本会读取所有复选框。不仅仅是提交表单中的那些。
-
"But if the checkbox in the second form is checked, it will not give an alert."为什么要呢?这些函数会查看复选框是否未选中,然后才会引发警报。也许您应该逐步描述您对代码的期望。 -
我的意思是,如果第二个表单中的复选框被选中并且第一个表单被提交,它不会发出警报。我想要的是脚本只检查正在提交的表单内的复选框。
标签: javascript validation checkbox