禁用键盘输入到ASP文本框

时间:2015-06-18 00:07:52

标签: c# asp.net textbox

我有一个带有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输入?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

另一种方法是,在页面加载期间在代码后面添加它:

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

这样可以防止立即输入和复制用户的粘贴输入。