我创建了一个简单的代码来处理keypress
事件:
var counter = 0;
$('input').on('keypress', function () {
$('div').text('key pressed ' + ++counter);
});
但是在移动浏览器(Android 4 +,WindowsPhone 7.5+)上不会引发keypress事件处理程序。 可能是什么问题?
答案 0 :(得分:15)
我认为 keypress 现已弃用。您可以查看Dom Level 3 Spec。使用 keydown 或 keyup 应该有效。该规范还建议您使用beforeinput而不是 keypress ,但我不确定支持是什么。
答案 1 :(得分:14)
尝试keyup
会帮助您
var counter = 0;
$('input').on('keyup', function () {
$('div').text('key up ' + ++counter);
});
答案 2 :(得分:2)
$(document).ready(function() {
var pattForZip = /[0-9]/;
$('#id').on('keypress input', function(event) {
if(event.type == "keypress") {
if(pattForZip.test(event.key)) {
return true;
}
return false;
}
if(event.type == 'input') {
var bufferValue = $(this).val().replace(/\D/g,'');
$(this).val(bufferValue);
}
})
})
答案 3 :(得分:0)
是的,有些android浏览器不支持keypress事件,我们只需要使用keydown或keyup但会得到不同的密钥代码,以避免使用以下函数通过发送char值来获取密钥代码。
例如:
function getKeyCode(str) {
return str && str.charCodeAt(0);
}
function keyUp(){
var keyCode = getKeyCode("1");
}
答案 4 :(得分:0)
使用jQuery的输入事件,如下所示:
$( 'input' ).on( 'input', function() {
...
} );
有了这个,您无法使用e.which来确定按下了哪个键,但我在这里找到了一个很好的解决方法:http://jsfiddle.net/zminic/8Lmay/
答案 5 :(得分:-4)
我认为用其他事件代替'按键'是个坏主意。 您需要做的只是在项目中包含一个jQuery文件。 任何版本的名为jQuery.mobile.js或非常相似的文件(例如jQuery.ui.js)都可以为您提供帮助。
您可以从以下网址下载:https://jquerymobile.com/download/