如何在文本框中禁用非字母字符?

时间:2013-08-12 21:37:36

标签: asp.net vb.net textbox

不,我不是指asp验证控件,我正在寻找一种方法来禁用"禁用"非字母字符,所以当用户按任何不是字母的键(空格除外)时,它就不会写在文本框中。

3 个答案:

答案 0 :(得分:3)

我一直使用AjaxControlToolkit的FilteredTextBoxExtenderhttp://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方法会将其全部删除。