asp.net - 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:TextBox ID="NewPassword" runat="server" Font-Names="calibri" Font-Size="14px" TextMode="Password" ontextchanged="NewPassword_TextChanged" AutoPostBack="True"></asp:TextBox>
但是,在您离开之前,事件本身不会触发,它是一个服务器端进程,并且只会在发送到服务器的帖子之间发生。如果您想在文本更改时处理此问题,请查看JavaScript
and 或JQuery
。