2014-08-28 161 views
-4

我的表单验证功能无法正常工作。显示在innerHTML元素中的错误消息一出现就会消失,如页面正在refreshed。我是javascript中的新消息。我不知道这是什么问题。表单验证JavaScript不起作用

<script type="text/javascript"> 
    function validate(form) { 
     var user = form.txtUsername; 
     var institute = form.txtinstitute; 
     var email = form.txtemail; 
     var pass1 = form.pwdpassword1; 
     var pass2 = form.pwdpassword2; 
     var check = ""; 

     check = validateFilled(pass2); 
     check = validateFilled(pass1); 
     check = validateFilled(email); 
     if (check == true) { 
      check = validateEmail(email); 
     } 
     check = validateFilled(institute); 
     check = validateFilled(user); 
     if (checked == false) { 
      return false; 
     } 
     //return true; 
    } 

    function validateFilled(control) { 
     if (control.value.length == 0) { 
      document.getElementById(control.id).nextSibling.innerHTML = "* required"; 
      document.getElementById(control.id).focus(); 
      return false; 
     } 
     return true; 
    } 

    function validateEmail(control) { 
     var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]  {1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
     if (!(re.test(email.value))) { 
      document.getElementById(email.id).nextSibling.innerHTML = " *invalid email"; 
      document.getElementById(email.id).focus(); 
      return false; 
     } 
     return true; 
    } 

</script> 
+6

问题寻求帮助调试(“为什么不是这个代码的工作?”)必须包括所期望的行为,具体的问题或错误,以及在问题本身中重现问题所需的最短代码。没有明确问题陈述的问题对其他读者无益。 – 2014-08-28 13:38:58

+0

当您提交表单时,该页面会收到回传事件。为了防止你的页面被重新加载,添加你处理click事件的函数event.preventDefault(); – Jerome2606 2014-08-28 13:42:20

+0

谢谢......我是新的JavaScript和在这个论坛上,我会改进我的格式问问题@EmilLundberg – user3725251 2014-08-28 20:55:12

回答

0
check = validateFilled(pass2); 
    check = validateFilled(pass1); //overrides check above 
    check = validateFilled(email); //overrides check above 
    if (check == true) { 
     check = validateEmail(email);//overrides check above 
    } 
    if (check == true) { 
     check = validateEmail(email);//overrides check above 
    } 
    check = validateFilled(institute);//overrides check above 
    check = validateFilled(user);//overrides check above 

所以如果那些都是假的,其下的其他检查将使它真实。糟糕的设计....

你只需要设置检查为false如果验证失败....

+0

谢谢@epascarello。 .....我会尽力...我是一个新手 – user3725251 2014-08-28 21:03:14