不,我不是说 asp 验证控件,我正在寻找一种“禁用”非字母字符的方法,所以当用户按下任何不是字母的键(空格除外)时,它根本不会被写入文本框。
问问题
1033 次
3 回答
3
我一直使用 AjaxControlToolkit FilteredTextBoxExtender
:http ://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 回答