您的位置:首页 > 其它

TextBox控件Password模式下,触发服务器端事件后,自动清空显示值问题

2010-12-02 14:38 211 查看

背景说明:

在一个项目中,测试人员曾反映,一个注册页面,当提交注册的时候,提示必填项不能为空,于是根据提示填上所需信息,结果总是提示“密码、确认密码不能空”!密码早就填啦,怎么还报错?!如此反复,该同事恼火了,要开发人员马上解决这个Bug!!不然后面的功能没法测试。

 

问题分析:

1、其实,该注册页面,除了用户名、密码外,还有不少必填项,需要滚动条才能看到底部的提交按钮。

2、提交前会进行验证,包括客户端和服务器端验证。客户端采用JS统一进行非空验证;服务器端采用验证控件进行正则验证,例如格式、长度、范围等。

3、若必填项为空,则客户端JS只弹一次窗口,统一提示哪些项不能为空。(服务器端则不验证,减轻负担)

4、由于该注册页面基本上采用了Web控件,于是问题来了。当前端JS弹出提示信息后,TextBox控件,在Password模式下(TextMode="password"),会自动清空显示值。

5、结果,就出现文章开头的情况了。

 

解决方案:

一开始,没想到简洁的解决法,用JS把密码先保存在隐藏字段再赋值吧,还是不行。

网上搜好久,遇到类似问题的童鞋还真不少,就是没有有效的解决方案。但有个童鞋则自己想出了解决方法,赞一个!

(原文见:http://heiyelidexingxing.blog.163.com/blog/static/3157821120086153610519/

 

 关键代码如下:

//说明:TextBox1.Attributes["value"]="123456789";可给TextBox赋值。

//在TextBox的OnTextChanged事件中,添加

this.TextBox1.Attributes["value"] = this.TextBox1.Text;

//或

this.TextBox1.Attributes["value"] = Request.Form[TextBox1.ClientID];

//即可。

//为稳妥起见,设置onpaste="return false" oncut="return false" 让TextBox不可以粘贴、复制。

  

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: