【问题标题】:asp.net onkeyup event for textbox文本框的 asp.net onkeyup 事件
【发布时间】:2017-07-21 09:06:53
【问题描述】:

我对文本框的 onkeyup 事件有疑问。我的功能是检查密码文本框的密码强度。所以当用户输入他的密码时,它会调用检查密码强度的功能,并在标签中显示他的密码是否非常弱/弱/中/强。此外,文本框背景将根据密码强度显示颜色。但是,当我输入密码文本框时,标签不显示任何内容,文本框也不会改变颜色。

<asp:TextBox ID="tb_password" runat="server" TextMode="Password" onKeyUp="checkPasswordStrength()"  ></asp:TextBox>
                        <script type="text/javascript">
    function checkPasswordStrength()
    {
        var passwordTextbox = document.getElementById("tb_password");
        var password = passwordTextbox.value;
        var specialCharacters = "!@#$%^&*_+";
        var passwordScore = 0;

        for (var i = 0; i < password.length; i++)
        {
            if(specialCharacters.indexOf(password.charAt(i) > -1))
            {
                passwordScore += 20;
            }
        }

        if (/[a-z]/.test(password))
        {
            passwordScore += 20;
        }

        if (/[A-Z]/.test(password)) {
            passwordScore += 20;
        }

        if (password.length >= 8) {
            passwordScore += 20;
        }

        if (/[\d]/.test(password)) {
            passwordScore += 20;
        }

        var strength = "";
        var backgroundColor = "";

        if (passwordScore >= 100)
        {
            strength = "Strong"
            backgroundColor = "green";
        }

        else if (passwordScore >= 80)
        {
            strength = "Medium"
            backgroundColor = "yellow";
        }

        else if (passwordScore >= 60) {
            strength = "Weak"
            backgroundColor = "red";
        }

        else
        {
            strength = "Very Weak"
            backgroundColor = "maroon";
        }

        document.getElementById("lbl_passwordStrength").innerHTML = strength;
        passwordTextbox.style.color = "white";
        passwordTextbox.style.backgroundColor = backgroundColor;
    }

</script>
                        <br />
                        <asp:Label ID="lbl_passwordStrength" runat="server"></asp:Label>

【问题讨论】:

  • 你知道 JavaScript 是否正在运行吗?使用例如 console.log 或调试器?

标签: c# asp.net webforms textbox


【解决方案1】:

包含在 ASP.NET 网页中的每个控件都必须包含唯一标识符 (ID)。为了保持这种唯一性,ASP.Net 在页面呈现为 HTML 时更改控件的 ID。

这里,如果下面的控件在&lt;asp:ContentPlaceHolder&gt; 内部,那么ID 很可能会更改为ctl00$ctl00$ContentPlaceHolder$tb_password

<asp:TextBox ID="tb_password" runat="server" TextMode="Password" onKeyUp="checkPasswordStrength()"></asp:TextBox>

要克服这个问题,您可以在标记中使用 客户端模式 或在 javascript 中使用 ClientID

方法一:

<asp:TextBox ID="tb_password" runat="server" TextMode="Password" onKeyUp="checkPasswordStrength()" ClientMode="Static"></asp:TextBox>

方法二:

var passwordTextbox = document.getElementById("<%=tb_password.ClientID%>");
.
.
.
.
document.getElementById("<%=lbl_passwordStrength.ClientID%>").innerHTML = strength;
passwordTextbox.style.color = "white";
passwordTextbox.style.backgroundColor = backgroundColor;

【讨论】:

  • 很高兴为您提供帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多