【问题标题】:Disable Keyboard Entry to ASP Textbox禁用 ASP 文本框的键盘输入
【发布时间】:2015-09-03 10:47:41
【问题描述】:

我有一个带有 ajaxToolkit:calendarextender 的文本框。
我还有一个OnTextChanged="do something" 和一个AutoPostBack=true

我只希望我的用户能够使用日历扩展器将数据输入文本框。

我尝试将文本框上的 readonly 属性设置为 true。这仅在文本框中存在现有文本时才有效(如果我 textbox.text = "such and such" 则通过日历扩展器进行输入)。

如果我尝试通过单击文本框并在日历扩展器中选择日期来选择日期,由于autopostbackOnTextChanged 事件,输入的任何内容都会立即被清除。我得到了这个例外:

Exception was thrown at line 3169, column 13 in http://localhost:44994/ScriptResource.axd?d=Es_vqsdtlYssgAF4A3XSWnRVXoRhHI0Nw5kbnX4TQidZ-ER24J-iO0awsG5JH1rtQZR_iEqhZs7sdOBQ9bRTWyylEaGjH7fv-s8DBZ9g2dBrQRgBCGkgUkMcfnp1eLLpQ46PuRCK6kw9bzcz5Laedpe2sZMPd6VRGBt-E7Jq3Hi6WSFYwQmlvlft0Bho70p20&t=7b689585
0x800a138f - JavaScript runtime error: Unable to get property 'AbbreviatedMonthNames' of undefined or null reference

如何禁止通过键盘输入文本框,只允许calendarextender 输入?

【问题讨论】:

    标签: c# asp.net textbox


    【解决方案1】:

    另一种方式,在页面加载期间将其添加到您的代码后面:

    protected void Page_Load(object sender, EventArgs e)
    {
        txtFrm.Attributes.Add("readonly", "true");
    }
    

    这将防止用户同时输入和复制粘贴输入。

    【讨论】:

      【解决方案2】:

      将属性onkeydown="return false;" 添加到文本框。这样用户将无法输入任何内容,但点击仍然有效。

      您可能还想添加onpaste ="return false;" 以防止复制/粘贴文本。

      【讨论】:

      • 非常感谢。我不得不标记几个愚蠢的 cmets 用于荒谬的输入。这工作得很好。为什么这些选项不在 Visual Studio 的 IntelliTrace 中?
      • @gh0st 这些实际上是 HTML input 元素的属性,而不是 ASP.NET TextBox 控件的属性,这就是 Visual Studio 的 Intellisense 不知道它们的原因。但是 ASP.NET TextBox 在浏览器中呈现为输入元素,这就是它起作用的原因。如果您查看页面源代码,您会看到类似<input type="text" onkeydown="return false;"...
      • 相对于onkeypress="return false;" 的另一个好处是onkeydown="return false;" 还可以禁用删除和退格键击。
      • 不允许 Tab 键工作。如果盲人用户正在浏览您的表单,他们将卡在该字段中。否则很好的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 2011-07-25
      • 2021-08-13
      相关资源
      最近更新 更多