2012-05-30 29 views
0

這裏是我的問題:Div切換onKeyup並保持可見Javascript和jQuery

我目前正在設計一個JavaScript函數,目的是驗證密碼的安全級別。輸入密碼後,我使用jQuery切換顯示包含「您的密碼」這個句子+給定安全級別的div(默認情況下是不可見的)的顯示。

一切工作正常,除了我在密碼輸入中使用onKeyUp event觸發我的div出現。然而,當然,每個按鍵都會切換我div的可見性。結果:密碼輸入中每按下一個第一個鍵,我的div就會出現,按下一個鍵,它會再次消失。有沒有一種方法可以在按下第一個鍵時切換一次div,並通過按下下一個鍵來防止它消失?

下面是代碼:

function password1Security() 

{ 
    var pwd1 = document.getElementById("password1"); 
    var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g"); 
    var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g"); 
    var pwdsft = document.getElementById("passwordSafetyLevel1"); 
    { 
     if (strongRegex.test(pwd1.value)) 
     { 
      pwdsft.innerHTML = '<span style="color:green;">Safe</span>' 
     } 
     else if (mediumRegex.test(pwd1.value)) 
     { 
      pwdsft.innerHTML = '<span style="color:orange;">Quite Safe</span>' 
     } 
     else 
     { 
      pwdsft.innerHTML = '<span style="color:red;">Unsafe</span>' 
     }; 
    } 
}; 

<input name="password1" 
     id="password1" 
     type="password" 
     size="15" 
     maxlength="20" 
     style="width:500px; height:30px;" 
     onKeyUp="showPassSafety1()" /> 
<br/> 
<span name="passwordSafety1" 
     id="passwordSafety1" 
     style="font-size:12pt; display:none;">Your password is <b name="passwordSafetyLevel1" id="passwordSafetyLevel1"></b>. 
< /span> 
<br/> 
+4

代碼縮進是你的朋友:) – mattytommo

回答

0

您可以使用jQuery .one()事件處理程序。 http://api.jquery.com/one/

+0

嗨,謝謝你的快速回復。我是jQuery的新手,我很難弄清楚如何用one()方法編寫代碼。它會像$(「password1」)。(「onKeyUp」,showPassSafety1()); ? – pierre1619

+0

它應該是'$(「#password1」)。one(「keyup」,showPassSafety1());',其中'password1'是用戶輸入密碼的元素,'showPassSafety1()'是您的函數不可見的元素。不要忘記,你必須使用jQuery選擇器 - 它不是'$(「password1」)',而是'$(「#password1」)''。 – Zemljoradnik

0

我相信你在某處設置了你的passwordSafety1範圍的可見度。

當你這樣做時,你應該檢查你的document.getElementById("password1").valuelength並設置它是否可見取決於這個長度,例如;避免在none和block之間切換。

+0

嗨,感謝您的想法,我會嘗試:) – pierre1619