2015-07-20 116 views
0
<!DOCTYPE html> 
<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    </head> 
    <body> 
     <textarea id="txtarea"></textarea> 
     <script> 
      var map = []; 
      $('#txtarea').onkeydown = $('#txtarea').onkeyup = function(e){ 
       e = e || event; // to deal with IE 
       map[e.keyCode] = e.type == 'keydown'; 
       if(map[13] && map[16]) 
        alert("Its Working!!"); 
       else 
        alert("Its not working !!"); 
      } 
     </script> 
    </body> 
</html> 

我想捕捉多个鼠标事件在once.Where是this.If错误有否更好的方法做,然后请让我知道捕获多个关键事件。提前致谢。我希望一次

+1

如何在'keyup'事件中使用'keydown'? – depperm

+0

该代码中的键名没有keydown .....'var a = b = 3;',但代码无效,因为这不是jQuery的工作原理。 – epascarello

+0

哦,我有办法。顺便谢谢所有的帮助 – Shubham

回答

1

如果更改

$('#txtarea').onkeydown = $('#txtarea').onkeyup = function(e){ 
      e = e || event; // to deal with IE 
      map[e.keyCode] = e.type == 'keydown'; 
      if(map[13] && map[16]) 
       alert("Its Working!!"); 
      else 
       alert("Its not working !!"); 
     } 

$('#txtarea').bind("keyup keydown", function(e){ 
    if(e.keyCode === 13] || e.keyCode === 16) { 
     alert("Its Working!!"); 
    } else { 
     alert("Its not working !!"); 
    } 
}); 

那么它应该适用于任何事件。

1

您无法一次捕获多个事件,只有一个事件会在任何给定时刻触发,并且JavaScript不会执行线程。

它看起来像你实际上试图一次性定义多个事件处理程序,但你的语法错误。

jQuery不支持onkeydown等属性。

您需要使用on方法。

events参数是一个包含空格分隔的事件列表的字符串。

$('#txtarea').on("keydown keyup", yourFuntion); 

e = e || event; // to deal with IE 

不要那样做。 jQuery标准化事件处理程序。

0

如果您使用.on(),则可以通过用空格分隔多个事件来绑定到多个事件。

$('#txtarea').on('keyup keydown', function (e){ 
    // (fires for both keyup and keydown events) 
    // console.log(e) 
}); 
0

正如我们上面的讨论,您正试图按下Shift-Enter时触发一个操作。您可以将上面的代码缩减到以下值:

$('#txtarea').on(
    'keydown', 
    function (e) { 
     if (e.shiftKey && e.keyCode === 13) { 
      // Shift-Enter has been pressed! 
     } 
    } 
); 
相关问题