Javascript 文本字段的验证无效

Javascript 文本字段的验证无效,javascript,Javascript,我有一个带有复选框和文本字段的html页面,JavaScript能够验证 复选框,但不包括文本字段。有人能帮忙吗?我不知道哪里不对 <html> <head> <script type="text/javascript"> function validator() { var c = document.getElementsByName("chk"); var k=false;

我有一个带有复选框和文本字段的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>

函数验证器()
{
var c=document.getElementsByName(“chk”);
var k=假;
对于(var i=0;i
我认为您的意思是
ap.value.length==0
,但无论哪种方式,它都是多余的,因为您已经检查了空字符串。只要
如果(!ap.value)
就可以了。此外,您在运行文本框部分之前就返回了


上面说,你应该考虑使用HTML5表单验证。它更干净,并且可以防止这样的问题。

< p>问题在你的函数中,在程序结束之前,你返回一个值,用文本字段验证。你需要捕获变量上的返回值,并且在方法结束时只返回它的值。

像这样的

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;
}
函数验证器(){
var c=document.getElementsByName(“chk”);
var k=假,
isValid=false;
对于(变量i=0;i
您能告诉我我应该在代码的哪一部分进行更改吗?它仍然会抛出“选择一个环境”并转到下一页。它不会为文本框发出警报进行一些更改。现在,如果我选中复选框而不填充文本框,它会抛出警报并以表单操作的形式转到页面,而它不应该这样做
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;
}