我想允许用户只输入字母。但按钮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"/>
我在以下浏览器中测试了我的答案;每个都有效:
另外,请参阅Mozilla的KeyboardEvent.key
browser compatibility文档