2013-07-29 172 views
0

這是我的表單。使用onblur進行表單驗證

<form method="post" name="frm" > 

    <label>Name*<input type="text" name="Name" value="<?php echo $r['Name'] ?>" onblur="if(this.value.length<3) alert('Name too short');" /></label> 


    <label>Username*<input type="text" name="UN" value="<?php echo $r['UN'] ?>" onblur="if(this.value.length<5) alert('Username too short');" /></label> 
    <label>Password*<input type="password" name="PW" onblur="validation()" /></label> 
    <label>Confirm Password*<input type="password" name="CM" onblur="validation()" /></label> 
    <?php } ?> 

    <input type="submit" name="Submit" value="<?php if($new) echo 'Register'; else echo 'Update'; ?>" /> 
</form> 

不用寫我試圖讓所有這些事件成函數調用驗證(),因爲我已經對密碼進行確認密碼fields.Here是我的驗證功能獨立的onblur事件。

<script language="javascript"> 
     function validation(){ 
      var password= document.frm.PW.value; 
      var password2=document.frm.CM.value; 
      if (password.length<5){ 
       alert ("Password too short"); 
       } 
      else if(password!=password2){ 
       alert("password mismatch"); 
       } 

      } 

    </script> 

但有了這個代碼,一旦我已經填寫密碼,當我上午即將開始爲輸入確認密碼字段它提醒消息(「密碼不匹配」)。如何this.And的擺脫了所有的表單標籤,如果我驗證和使用驗證()函數,然後在每個標籤,我必須調用onblur = validation();

+1

如果您在鍵入時將頁面上顯示的內容替換爲警報,則更不用說煩人了。即用錯誤消息更新跨度。我會避免提醒,但是如果您確實使用它們,請單擊Submit(提交)時保存。 – Rake36

回答

1

沒有在主密碼更改時觸發密碼驗證 - 當您更改密碼2或單擊提交時它會被解僱。 :)

如果堅持檢查,當您更新密碼和密碼2,我只想補充檢查,以查看是否密碼2被留空白:

else if(password !== password2 && password2 !== ""){ 

但在提交做所有你的支票是更清潔的解決方案(正如Rake所說的那樣,仍然需要更新而不是提醒)。

+0

這是沒有使用onblur使用

clarkson