验证文本字段不起作用

时间:2013-04-07 02:50:55

标签: javascript

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

2 个答案:

答案 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表单验证。它更清洁,可以防止这些问题。