我只允许用户输入字母。但是按钮Home
,End
,Backspace
,Delete
和Arrow keys
应该在文本框中起作用。
我已经编写了以下jQuery代码来实现此目的。
正则表达式^[a-zA-Z]*$
在Chrome中工作正常,但在Mozilla FireFox中无法正常工作
$('#Firstname').bind('keypress', function (e) {
var regex = new RegExp("^[a-zA-Z]*$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="Firstname" type="text"/>
谢谢
最佳答案
简要
根据Mozilla的文档,KeyboardEvent.charCode
和KeyboardEvent.which
均已弃用(charCode
也被视为非标准)。
字符代码KeyboardEvent.charCode
的文档包含以下消息
哪一个KeyboardEvent.which
的文档包含以下消息
码
$('#Firstname').bind('keypress', function (e) {
var regex = new RegExp("^[a-zA-Z]*$");
if (regex.test(e.key)) {
return true;
}
return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="Firstname" type="text"/>
兼容性
我在以下浏览器中测试了答案;每个工作:
Chrome:63.0.3239.84(以及用于OSX的Chrome-感谢@TimBiegeleisen)
Firefox:58.0b11
边缘:41.16299.15.0
Internet Explorer:11.125.16299.0
Safari(感谢@TimBiegeleisen)
另外,请参见Mozilla的
KeyboardEvent.key
browser compatibility文档