<!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>
我想一次捕获多个鼠标事件。这里有错误。如果有更好的方法,请告诉我。提前致谢。
答案 0 :(得分:1)
您无法一次捕获多个事件,在任何给定时刻只会触发一个事件而JavaScript不会执行线程化。
看起来您实际上是在尝试同时定义多个事件处理程序,但您的语法错误。
jQuery不支持onkeydown
等属性。
您需要使用on
方法。
events
参数是一个包含空格分隔的事件列表的字符串。
$('#txtarea').on("keydown keyup", yourFuntion);
e = e || event; // to deal with IE
不要那样做。 jQuery规范化事件处理程序。
答案 1 :(得分: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 !!");
}
});
然后它应该适用于任何一个事件。
答案 2 :(得分:0)
如果您使用.on(),则可以通过用空格分隔来绑定多个事件。
$('#txtarea').on('keyup keydown', function (e){
// (fires for both keyup and keydown events)
// console.log(e)
});
答案 3 :(得分:0)
根据我们上面的讨论,您尝试在按下Shift-Enter时触发操作。您可以将上面的代码减少到以下内容:
$('#txtarea').on(
'keydown',
function (e) {
if (e.shiftKey && e.keyCode === 13) {
// Shift-Enter has been pressed!
}
}
);