2012-07-03 97 views
0

我在密碼錶單上提供驗證功能。我需要能夠實施一些驗證規則,並在提交時對它們進行檢查。現在,我的代碼是健全的,但我認爲他們可能是在我的代碼中的一些邏輯錯誤,我太累了,注意多重驗證檢查 - 邏輯錯誤

這裏的JavaScript的(太咖啡機!):

<script type="text/javascript"> 
<!-- 
    function validate(registerForm) 
    registerForm.onsubmit=function() 
    { 
     var pw1 = document.forms["register"]["password1"].value; 
     var pw2 = document.forms["register"]["password2"].value; 

     //Check values are present in both fields 
     if(pw1 == '' || pw2 == '') 
     { 
      alert("Please enter your password twice."); 
      return false; 
     } 
     //Check there no spaces 
     else if(document.forms["register"]["password1"].value.indexOf(invalid) > - 1) 
     { 
      alert("Spaces are not allowed in passwords!"); 
      return false; 
     } 
     //Check passwords are the same 
     else 
     { 
      if(pw1 != pw2) 
      { 
       alert("The passwords you entered were not the same. Please try again!"); 
       return false; 
      } 
      //Accept passwords 
      { 
       alert("Password accepted!"); 
       return true; 
      } 
     } 
    } 
--> 
</script> 

而且HTML格式去與它:

<form id="register"> 
    <label for="username">Username</label> 
    <input type="text" class="input_text" name="username" id="name" placeholder="e.g. AberLibrary01" /> 
    <br /> 
    <label for="password">Password</label> 
    <input type="text" class="input_text" name="password1" id="password1" placeholder="e.g. aber01" /> 
    <br /> 
    <label for="re-enterpassword">Re-enter password</label> 
    <input type="text" class="input_text" name="password2" id="password2" placeholder="e.g. aber01" /> 

    <input type="submit" class="button" value="Register" /> 
    </form> 

    <script type="text/javascript"> 
    <!-- 
     new validate(document.forms['register']); 
    --> 
    </script> 

任何想法的可愛的StackOverflow社區?確切的問題是,它不會檢查密碼中的空格或輸入的兩個密碼是否相同。它成功地檢查了兩個密碼字段中至少有一些內容。

感謝丹

+0

有什麼確切的問題? –

+0

我忘了提及它,它已成功檢查密碼字段中是否有內容,但不檢查是否有空格或兩個密碼相互匹配! – WebDevDanno

回答

0

這條線:

else if(document.forms["register"]["password1"].value.indexOf(invalid) > - 1) 

invalid沒有定義,我懷疑這會導致你面臨的問題。

+0

啊,謝謝!解決了我的問題,自上午8點以來即刻在工作,眼睛很累=] – WebDevDanno

+0

不,它不能解決你的問題,還有更多的錯誤。例如「」和「hdhadhadh」在輸入時被接受。如果密碼不相等,密碼不會被檢查。 –

+0

出現了一個新問題:驗證在Firefox中完美工作,但在Chrome和IE9中無法正常工作,對任何想法都啓用了JavaScript? :/ – WebDevDanno

0

對代碼進行修改了它的工作http://jsbin.com/igonec/edit#preview

錯誤

  1. 使用VAR PW1的= document.forms [ 「註冊」] [ 「密碼1」。這是造成錯誤
  2. 其他缺失。
  3. 使用無效而不是「」。
  4. 括號的錯誤使用。

我省略了您的錯誤並使解決方案更加優雅。

javascipt的

function validate() 
    { 
     var pw1 = document.getElementById("password1").value; 
     var pw2 = document.getElementById("password2").value; 

     //Check values are present in both fields 
     if(pw1 ==='' || pw2 === '') 
     { 
      alert("Please enter your password twice."); 
      return false; 
     } 
     //Check there no spaces 
     else if(document.getElementById("password1").value.indexOf(" ") > - 1) 
     { 
      alert("Spaces are not allowed in passwords!"); 
      return false; 
     } 
     //Check passwords are the same 
     else 
     { 
      if(pw1 !== pw2) 
      { 
       alert("The passwords you entered were not the same. Please try again!"); 
       return false; 
      } 
      else 
      { 
       alert("Password accepted!"); 
       return true; 
      } 
     } 

    } 

HTML

<form id="register"> 
    <label for="username">Username</label> 
    <input type="text" class="input_text" name="username" id="name" placeholder="e.g. AberLibrary01" /> 
    <br /> 
    <label for="password">Password</label> 
    <input type="text" class="input_text" name="password1" id="password1" placeholder="e.g. aber01" /> 
    <br /> 
    <label for="re-enterpassword">Re-enter password</label> 
    <input type="text" class="input_text" name="password2" id="password2" placeholder="e.g. aber01" /> 

    <input type="submit" class="button" onclick="validate()" value="Register" /> 
    </form> 
+0

謝謝你的建議,我會承擔這些想法,但上面的答案已經解決了我的問題。 :) – WebDevDanno

+0

您的問題尚未解決。還有更多的錯誤,例如,密碼不匹配,任何方式,您的歡迎。 –

+0

如果我輸入兩個不同的密碼,我的驗證信息會產生,說他們不匹配。對我來說,這是成功的驗證,有不止一種方法來剝皮貓朋友。 – WebDevDanno