Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery:keyPress Backspace赢了';你不会开枪吗?_Jquery_Keypress_Backspace - Fatal编程技术网

jQuery:keyPress Backspace赢了';你不会开枪吗?

jQuery:keyPress Backspace赢了';你不会开枪吗?,jquery,keypress,backspace,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 cas

我想知道我做错了什么:

$(".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()
函数在我按下Backspace键时也被激发。目前,当我在Chrome和Safari中按Backspace时,绝对没有发生任何事情


有什么想法吗?

keyup
代替
keypress
。当用户按下某个键时,它会获取所有的键代码。我自己也遇到过这个问题。我在上使用了
,所以看起来有点不同,但我这样做了:

 $('#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();
            }
        }
    });
$(this.bind(“keydown”),函数(事件){
//允许:退格,删除
if(event.keyCode==46 | | event.keyCode==8)
{
var tempField=$(this.attr('name');
var hiddenID=tempField.substr(tempField.indexOf(“”“)+1);
$('#'+hiddenID).val('');
$(this.val(“”)
返回;
}//允许:制表符、转义和回车
如果(event.keyCode==9 | | event.keyCode==27 | | event.keyCode==13||
//允许:Ctrl+A
(event.keyCode==65&&event.ctrlKey==true)||
//允许:起始、结束、左、右

(event.keyCode>=35&&event.keyCode如果只想在输入使用发生更改时触发事件:

$('.s').bind('input', function(){
  console.log("search!");
  doSearch();
});

根据.keypress()的jQuery文档,它不会捕获不可打印的字符,因此退格在keypress上不起作用,但会在keydown和keypup中捕获:

当浏览器注册键盘输入时,按键事件被发送到元素。这与按键事件类似,只是修改键和非打印键(如Shift、Esc和delete)触发按键事件,而不是按键事件。这两个事件之间的其他差异可能因平台和浏览器而异。()

在某些情况下,keyup不受欢迎或具有其他不受欢迎的效果,而keydown就足够了,因此处理这种情况的一种方法是使用
keydown
捕捉所有击键,然后设置一个短时间间隔的超时,以便输入该键,然后在那里进行处理

jQuery(el).keydown( function() { 
    var that = this; setTimeout( function(){ 
           /** Code that processes backspace, etc. **/ 
     }, 100 );  
 } );

既然
keypress
不会,为什么
keypup
会触发Backspace?就是这样。keypup会触发Backspace,keypress不会->奇怪。是否有机会检查两个键是否像cmd-c、cmd-v或cmd-aIt那样被按下,实际上取决于键。您想使用
keypress
来执行
Enter
键、
keydown
>对于
Backspace
等等;否则,您会发现某些浏览器中的事件并不像您预期的那样工作,特别是当您希望防止键的默认行为时。如果使用错误的行为,则会发生事件根本未被捕获的情况(如Backspace)或者你无法阻止它;因为它在你的事件处理代码到达之前就已经发生了。这个答案的问题是使用
keyup
会有问题。你知道一个答案可以正确检测全键盘上的任何键吗?
keyun
是所有键的更好选择。你可以尝试这个jQuery插件并使用“backspace”键别名它不在chrome上启动,但在Firefox上启动。很抱歉,但值得注意的是,e.which优先于e.keyCode
input
也不遵守keyCodes。这也不起作用。如果您使用event.which而不是event.keyCode,它在Firefox上起作用