首页 > 解决方案 > TextMode="Password" 中的 TextBox 是否未触发 TextChanged 事件?

问题描述

我正在创建一个密码文本字段,该字段显示/隐藏密码要求,因为用户将密码输入到 TextMode="Password" 的 TextBox 中。我添加了一个 TextChanged 事件,因此每次输入/删除新字符时,我都可以根据要求检查 TextBox 文本。
我遇到的问题是 TextChanged 事件似乎从未被触发过。以下是相关代码:

<tr>
    <td style="text-align: right">
        <asp:Label ID="Label1" runat="server" CssClass="BoldLabel14px" Font-Bold="True" 
                   Text="New Password"></asp:Label>
     </td>
     <td>
         <asp:TextBox ID="NewPassword" runat="server" Font-Names="calibri" 
                      Font-Size="14px" TextMode="Password"></asp:TextBox>
     </td>
</tr>
Protected Sub NewPassword_TextChanged(sender As Object, e As EventArgs) Handles NewPassword.TextChanged
        System.Diagnostics.Debug.WriteLine("NewPassword Text = " & Me.NewPassword.Text)
        CheckPasswordRequirements(Me.NewPassword.Text)
        Me.PasswordRequirementsCapital.Visible = False
    End Sub

从这段代码中,输出永远不会显示调试语句,因为 TextBox 被修改。获取文本的方式不同吗?我正在使用 Visual Studio、vb.net 和 asp.net。

标签: asp.netvb.net

解决方案


未触发事件的主要原因是因为您没有绑定甚至被触发的事件。

它应该是这样的:

 <asp:TextBox ID="NewPassword" runat="server" Font-Names="calibri" Font-Size="14px" TextMode="Password" ontextchanged="NewPassword_TextChanged" AutoPostBack="True"></asp:TextBox>

但是,在您离开之前,事件本身不会触发,它是一个服务器端进程,并且只会在发送到服务器的帖子之间发生。如果您想在文本更改时处理此问题,请查看JavaScriptand 或JQuery


推荐阅读