2014-08-28 129 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