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(); });