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

问题描述 投票:1回答:1

我想允许用户只输入字母。但按钮HomeEndBackspaceDeleteArrow 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"/>

谢谢

jquery regex
1个回答
3
投票

简要

根据Mozilla的文档,KeyboardEvent.charCodeKeyboardEvent.which都被弃用(charCode也被认为是非标准的)。

charCode

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

Non-standard message Deprecated message Alternative message

which

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
  • Firefox:58.0b11
  • 边缘:41.16299.15.0
  • Internet Explorer:11.125.16299.0
  • Safari(感谢@TimBiegeleisen

另外,请参阅Mozilla的KeyboardEvent.key browser compatibility文档

© www.soinside.com 2019 - 2024. All rights reserved.