Cmd + 文本选择不起作用只允许在文本字段输入数字

Cmd + a text selection not working on only allowing numeric input at textfield

我正在尝试解决 Firefox 上 Mac 的一个奇怪问题,如果我只允许数字作为文本字段的输入,我无法 select 带有 CTRL + A 的文本。 我发现这个 fiddle 来解释问题:LINK

有谁知道为什么,我该如何解决?

使用事件的 metaKey 属性 来查找是否按下 cmd 并在没有验证的情况下传递它。

if((e.metaKey || e.ctrlKey) && e.which == 97) {
          return true
      }

fiddle

简单的回答:不要费心去检查用输入值的键是什么,因为用户输入可以有成千上万种方式出现在一个字段中,这不会触发 keyup/keydown 事件(语音识别、复制+粘贴、手写识别、来自开发控制台的 $('.foo').val('bar') 等),并且有很多方法可以跨平台进行复制+粘贴,所以检查 event.ctrlKey + 'c' 或类似的是一场徒劳的战斗。

而是做这样的事情:

function forceNumeric(){
    $(this).val($(this).val().replace(/[^0-9]+/gi,''));
}
$('input[type="number"]').on('propertychange input', forceNumeric);

此代码将在任何输入状态更改事件中从输入中删除所有非数字字符。