0

不,我不是说 asp 验证控件,我正在寻找一种“禁用”非字母字符的方法,所以当用户按下任何不是字母的键(空格除外)时,它根本不会被写入文本框。

4

3 回答 3

3

我一直使用 AjaxControlToolkit FilteredTextBoxExtenderhttp ://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/FilteredTextBox/FilteredTextBox.aspx

于 2013-08-12T21:41:07.167 回答
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;
   }
于 2013-08-12T21:42:34.680 回答
0

有很多方法可以做到这一点,但我只是想我会分享一些想法,以防其他人偶然发现这个问题,寻找一个快速而肮脏的解决方案。

另一个简单的 javascript 选项是在onKeyUp.

将 javascript 事件添加到您的文本框:

<asp:TextBox ID="txtWhatever" runat="server" onkeyup="javascript:OnKeyUpEvent(this);" />

然后用你想要的任何正则表达式编写一个简单的函数:

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方法会将它们全部删除。

于 2020-12-09T00:12:22.217 回答