0

这是我的问题:

我目前正在设计一个用于验证密码安全级别的 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

2 回答 2

0

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

于 2012-05-30T11:49:37.820 回答
0

我相信您正在某个地方设置您的passwordSafety1跨度的可见性。

当你这样做时,你应该检查length你的document.getElementById("password1").value并设置它是否可见,例如取决于这个长度;避免在 none 和 block 之间切换。

于 2012-05-30T12:08:37.427 回答