我有一个带有ajaxToolkit的文本框:附加了calendarextender
我还有OnTextChanged="do something"
AutoPostBack=true
。
我只希望我的用户能够使用日历扩展程序将数据输入文本框。
我已尝试将文本框中的readonly
属性设置为true。仅当文本框中存在现有文本时才有效(如果我textbox.text = "such and such"
然后通过日历扩展程序输入工作)。
如果我尝试通过点击文本框并在日历扩展程序中选择日期来选择日期,则会因autopostback
和OnTextChanged
事件而立即清除输入的所有内容。我得到了这个例外:
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
输入?
答案 0 :(得分:2)
将属性onkeydown="return false;"
添加到文本框中。这样用户将无法输入任何内容,但点击仍然有效。
您可能还想添加onpaste ="return false;"
以防止复制/粘贴文字。
答案 1 :(得分:0)
另一种方法是,在页面加载期间在代码后面添加它:
protected void Page_Load(object sender, EventArgs e)
{
txtFrm.Attributes.Add("readonly", "true");
}
这样可以防止立即输入和复制用户的粘贴输入。