jquery - 名称的跨浏览器 Jquery 正则表达式

标签 jquery regex

我想允许用户仅输入字母。但是按钮HomeEndBackspaceDelete箭头键应该可以使用在文本框中。

我编写了以下 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.charCodeKeyboardEvent.which已弃用(charCode 也被视为非标准)。

字符代码

KeyboardEvent.charCode 的文档包含以下消息

Non-standard message Deprecated message Alternative message

哪个

KeyboardEvent.which 的文档包含以下消息

Deprecated message

<小时/>

代码

$('#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/

相关文章:

正则表达式,编写玩具编译器,解析,注释删除器

javascript - 根据查询字符串生成动态超链接

php - 正则表达式删除非键盘字符

c# - 验证 excel 工作表名称

JavaScript 数组有元素但长度为零

php - 使用 PHP 删除 url

javascript - 为什么在 regex char 可选时找不到匹配项

jquery - 如何使用 jQuery 发布包含多个字段的表单?

php - jQuery - 根据视口(viewport)中的部分显示按钮

jquery - 关闭 jquery ui 对话框后无法重新打开它