使用Jquery在文本框中禁用事件侦听器

时间:2015-11-14 15:41:02

标签: jquery

我想为向上,向下,向左和向右键添加事件处理程序,但是当用户在文本框内输入时意外命中它们时,我不希望它们被触发。我写过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();  
        }
      });
});

http://jsfiddle.net/44h6n8q2/

1 个答案:

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