不,我不是指asp验证控件,我正在寻找一种方法来禁用"禁用"非字母字符,所以当用户按任何不是字母的键(空格除外)时,它就不会写在文本框中。
答案 0 :(得分:3)
我一直使用AjaxControlToolkit的FilteredTextBoxExtender
:http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/FilteredTextBox/FilteredTextBox.aspx
答案 1 :(得分:1)
你可以尝试使用它: -
ValidationExpression="^[A-Za-z]*$"
或使用javascript的简单解决方案: -
if ((event.keyCode > 64 && event.keyCode < 91) || (event.keyCode > 96 && event.keyCode < 123) || event.keyCode == 8)
return true;
else
{
alert("Please enter only char");
return false;
}
答案 2 :(得分:0)
有很多方法可以做到这一点,但是我只是想分享一些想法,以防其他人偶然发现这个问题,寻求一种快速而肮脏的解决方案。
另一个简单的javascript选项是仅删除onKeyUp
期间不需要的任何内容。
将javascript事件添加到您的文本框:
<asp:TextBox ID="txtWhatever" runat="server" onkeyup="javascript:OnKeyUpEvent(this);" />
然后用所需的RegEx编写一个简单的函数:
function OnKeyUpEvent(txt) {
txt.value = txt.value.replace(/[\W_]+/g, ""); // Only accept alpha-numeric characters
}
onKeyDown
适用于简单的键码,但是组合是一个问题。假设您要允许数字而不是符号,并且用户按住SHIFT键然后按4。这将两次触发onKeyDown
,一次使用keyCode 16(SHIFT键),一次使用keyCode 52(4键)。当onKeyDown
中的代码可以传递keyCode == 52时,您可能会在文本框中留下“ $”。
另一个考虑因素是复制/粘贴。如果用户粘贴了一个包含无效字符的长字符串,则此onKeyUp
方法会将其全部删除。