我创建了一个简单的代码来处理keypress
事件:
var counter = 0;
$('input').on('keypress', function () {
$('div').text('key pressed ' + ++counter);
});
但在移动浏览器(Android 4+、WindowsPhone 7.5+)上不会引发按键事件处理程序。可能是什么问题?
我创建了一个简单的代码来处理keypress
事件:
var counter = 0;
$('input').on('keypress', function () {
$('div').text('key pressed ' + ++counter);
});
但在移动浏览器(Android 4+、WindowsPhone 7.5+)上不会引发按键事件处理程序。可能是什么问题?
我相信keypress现在已被弃用。您可以查看Dom Level 3 Spec。使用keydown或keyup应该可以工作。该规范还建议,你应该使用beforeinput代替按键,但我不知道这样的支持。
使用keyup
事件:
// JavaScript:
var counter = 0;
document.querySelector('input').addEventListener('keyup', function () {
document.querySelector('div').textContent = `key up ${++counter}`;
});
// jQuery:
var counter = 0;
$('input').on('keyup', function () {
$('div').text('key up ' + ++counter);
});
$(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);
}
})
})
是的,一些android浏览器不支持keypress事件,我们只需要使用keydown或keyup就会得到不同的keycode,为了避免不同的keycode,使用下面的函数通过发送char值来获取keycode。
例如:
function getKeyCode(str) {
return str && str.charCodeAt(0);
}
function keyUp(){
var keyCode = getKeyCode("1");
}
使用 jQuery 的 input 事件,像这样:
$( 'input' ).on( 'input', function() {
...
} );
有了这个,你不能使用 e.which 来确定按下了哪个键,但我在这里找到了一个很好的解决方法:http : //jsfiddle.net/zminic/8Lmay/