最近在做WebForm页面的textBox的password格式(密码框),发现一个问题,刷新页面时,会清空密码框中的值。
问题原因:为了安全考虑及webForm请求机制原因,导致刷新不保存密码框输入的值
那么如何解决清空的问题呢?
首先我们有一个aspx页面,一个密码框、一个密码隐藏域
<label for="txtUserPwd">密码</label>
<asp:TextBox ID="txtUserPwd" runat="server" CssClass="form-control" TabIndex="2" TextMode="Password" OnTextChanged="txtUserPwd_TextChanged" ></asp:TextBox>
<asp:HiddenField ID="hidUserPwd" runat="server" />
在aspx后台处理页面的txtUserPwd_TextChanged保存输入的密码值
/// <summary>
/// 用户确认密码必填验证
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtResetPwd_TextChanged(object sender, EventArgs e)
{
if (this.txtConfirmUserPwd.Text.Length > 0)
{//设置隐藏确认重置密码框字段的值
this.hidConfirmUserPwd.Value = this.txtConfirmUserPwd.Text.Trim();
}
else
{
}
}
然后的aspx页面使用js将隐藏域的值赋给密码框(页面记得引入jquery文件)
//获取隐藏用户密码框值(刷新后密码框无法显示)
if ($('#hidUserPwd').val().length > 0) {
$('#txtUserPwd').val($('#hidUserPwd').val());
}
实现的效果大概是这样的: 当输入密码和确认密码不一致(提交后台),实现可前台页面可提示错误,又不刷新密码框的值
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5COxkjZ2E2M5ATMjVDZ2kjY4IWZ2IWZkFjZ1ATOxYWNi9CX5AzLclDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)