我想允许用户仅输入字母。但是按钮Home
、End
、Backspace
、Delete
和箭头键
应该可以使用在文本框中。
我编写了以下 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)
- 火狐浏览器:58.0b11
- 边缘:41.16299.15.0
- Internet Explorer:11.125.16299.0
- Safari(感谢 @TimBiegeleisen )
此外,请参阅 Mozilla 的文档 KeyboardEvent.key
browser compatibility
关于jquery - 名称的跨浏览器 Jquery 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889723/