我有带复选框和文本字段的html页面,JavaScript可以验证 复选框,但不是文本字段。有人可以提供帮助,因为我不确定哪里出错了
<html>
<head>
<script type="text/javascript">
function validator()
{
var c = document.getElementsByName("chk");
var k=false;
for( var i=0; i<c.length; i++ )
{
if( c[i].checked )
{
k=true;
return(true);
}
}
if(k){
return(true);
}
else{
alert("Select one environment");
return(false);
}
var ap = form.getElementById("a1");
if(ap.value == "" || ap.length == 0)
{
alert("Enter the path");
ap.setfocus();
return(false);
}
else
{
return(true);
}
var p = form.getElementById("a2");
if(p.value == "" || p.length == 0)
{
alert("Enter the path");
form.p.setfocus();
return(false);
}
return(true);
}
</script>
</head>
<body>
<form action="/car.java" onsubmit="return validator(this);">
<br />
<p>
<input name="chk" type="checkbox" />One
<input name="chk" type="checkbox" />Two
<input name="chk" type="checkbox" />Three
</p>
<br />
<input name="a1" id="a1" size="123" style="width: 766px; height: 21px;" type="text" />
</p>
<p>
<input name="a2" id="a2" size="123" style="width: 766px; height: 21px;"
type="text" />
</p>
<textarea cols="95" name="status" rows="11"></textarea>
<input name="sub" size="28" style="width: 156px; height: 29px;" type="button"
value="Submit" />
</p>
</form>
</body>
</html>
答案 0 :(得分:1)
问题出在您的函数上,您在程序完成之前返回一个值,并进行文本字段验证。您需要捕获变量的返回值,并在方法结束时返回其值一次。
类似这样的事情
function validator() {
var c = document.getElementsByName("chk");
var k = false,
isValid = false;
for (var i = 0; i < c.length; i++) {
if (c[i].checked) {
k = true;
}
}
if (k) {
isValid = true;
} else {
alert("Select one environment");
}
var ap = form.getElementById("a1");
if (ap.value == "" || ap.length == 0) {
alert("Enter the path");
ap.setfocus();
} else {
isValid = true;
}
var p = form.getElementById("a2");
if (p.value == "" || p.length == 0)
{
alert("Enter the path");
form.p.setfocus();
}
return isValid;
}
答案 1 :(得分:0)
if(ap.value == "" || ap.length == 0)
我认为你的意思是ap.value.length == 0
,但无论哪种方式都是多余的,因为你已经检查了空字符串。只需if(!ap.value)
即可。此外,在文本框部分运行之前,您return
。
那就是说,您应该考虑使用HTML5表单验证。它更清洁,可以防止这些问题。