jQuery:keyPress Backspace不会触发?
我不知道我在做什么错:
$('.s').keypress(function(e) { switch (e.keyCode) { case 8: // Backspace //console.log('backspace'); case 9: // Tab case 13: // Enter case 37: // Left case 38: // Up case 39: // Right case 40: // Down break; default: doSearch(); } });
我想要我的doSearch()
函数也被触发,当我点击退格键。 目前在Chrome和Safari中按Backspace时绝对没有任何反应。
有任何想法吗?
使用keyup
而不是keypress
。 当用户按下某个键时,这将获得所有的键码
我自己遇到了这个。 我使用.on
所以它看起来有点不同,但我做到了这一点:
$('#element').on('keypress', function() { //code to be executed }).on('keydown', function(e) { if (e.keyCode==8) $('element').trigger('keypress'); });
在这里添加我的工作。 我需要删除用户键入的ssn,所以我在jQuery中做了这个
$(this).bind("keydown", function (event) { // Allow: backspace, delete if (event.keyCode == 46 || event.keyCode == 8) { var tempField = $(this).attr('name'); var hiddenID = tempField.substr(tempField.indexOf('_') + 1); $('#' + hiddenID).val(''); $(this).val('') return; } // Allow: tab, escape, and enter else if (event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || // Allow: Ctrl+A (event.keyCode == 65 && event.ctrlKey === true) || // Allow: home, end, left, right (event.keyCode >= 35 && event.keyCode <= 39)) { // let it happen, don't do anything return; } else { // Ensure that it is a number and stop the keypress if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) { event.preventDefault(); } } });
如果您想仅在您的input使用更改时触发该事件:
$('.s').bind('input', function(){ console.log("search!"); doSearch(); });