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
}
简单的回答:不要费心去检查用输入值的键是什么,因为用户输入可以有成千上万种方式出现在一个字段中,这不会触发 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);
此代码将在任何输入状态更改事件中从输入中删除所有非数字字符。
我正在尝试解决 Firefox 上 Mac 的一个奇怪问题,如果我只允许数字作为文本字段的输入,我无法 select 带有 CTRL + A
的文本。
我发现这个 fiddle 来解释问题:LINK
有谁知道为什么,我该如何解决?
使用事件的 metaKey
属性 来查找是否按下 cmd
并在没有验证的情况下传递它。
if((e.metaKey || e.ctrlKey) && e.which == 97) {
return true
}
简单的回答:不要费心去检查用输入值的键是什么,因为用户输入可以有成千上万种方式出现在一个字段中,这不会触发 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);
此代码将在任何输入状态更改事件中从输入中删除所有非数字字符。