我想为向上,向下,向左和向右键添加事件处理程序,但是当用户在文本框内输入时意外命中它们时,我不希望它们被触发。我写过jsfiddle来说明问题。 我试图在文本框内检查事件并停止传播,但它不起作用。
$(document).keyup(function(event)
{
switch(event.which) {
case 37: // left
$("#left-arrow").show();
break;
case 38: // up
$("#up-arrow").show();
break;
case 40: // down
$("#down-arrow").show();
break;
case 39: // right
$("#right-arrow").show();
}
});
$("#textbox1").keyup(function()
{
var textinput = $('#textbox1').val();
$("#textbox2").val(textinput);
$(document).keyup(function (event) {
var keycode2 = (event.keyCode ? event.keyCode : event.which);
if ( keycode2 == '37' || keycode2 == '38' || keycode2 == '39' || keycode2 == '40') {
event.stopPropagation();
}
});
});
答案 0 :(得分:0)
您必须在原件上获取的事件时调用stopPropagation
keyup
回调:
$("#textbox1").keyup(function(event) {
var textinput = $('#textbox1').val();
$("#textbox2").val(textinput);
var keycode = event.keyCode || event.which;
if (keycode == 37 || keycode == 38 || keycode == 39 || keycode == 40) {
event.stopPropagation();
}
});