zoukankan      html  css  js  c++  java
  • TextBox的ReadOnly=true时不能取值的解决方案

    在开发某个系统,用TextBox作为日历输入控件时,并希望用户直接输入,而是用JS日历客户端脚本的方式来设置内容,再将其属性设置为ReadOnly=true,可问题发生了,在服务器不能通过Text属性获取在客户端设置的内容,怎么办?

    估且不谈产生此问题的原因(读者可以Google答案,也可以问题解决后再找原因,效果更佳),现提供解决方案:

    1、不设置TextBox的ReadOnly=true属性,通过OnFocus=this.blur()来模拟ReadOnly=true,如下:

    1
    <ASP:TEXTBOX id=txtTest onfocus=this.blur() runat="server"></ASP:TEXTBOX>

    说明:在此情况下,当文本框获得焦点时便立刻失去,同时相应的客户端脚本触发,给文本框设置内容,用户就无法用键盘输入不合乎规则的内容,能够模拟ReadOnly=true效果,在服务器端能够通过Text属性正常获取通过脚本在客户端设置的值。

    2、对于已设置ReadOnly=true属性后,通过Request来取值,如下前台代码:

    1
    <ASP:TEXTBOX id=txtTest runat="server" readonly="true"></ASP:TEXTBOX>

    后台代码:

    1
    string text=Request.Form["txtTest"].Trim()

    3、在Page_Load()设置文本框的只读属性,这样能正常读取,如下:

    1
    2
    3
    4
    5
    6
    7
    protected void Page_Load(object sender,EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            txtTest.Attributes.Add("ReadOnly","true");
        }
    }

    对于该问题,共提出以上三种解决方案,笔者建议使用第一种解决方案。

    除非注明,文章均为彭智勇原创,转载请务必注明本文地址,谢谢。

    本文地址:http://pengzhiyong.com/blog/4.html

  • 相关阅读:
    Java面向对象类与对象整理
    Java案例整理
    Java引用类型传递整理
    Java基础方法整理
    Java流程控制语句和数组整理
    Java流程语句
    Java运算符和引用数据类型(Scanner、Random)
    Java概念、语法和变量基础整理
    Mysql连接查询、子查询、联合查询 整理
    Mysql数据约束 整理
  • 原文地址:https://www.cnblogs.com/halo/p/2801129.html
Copyright © 2011-2022 走看看