jQuery Prevent Default - 在某些情况下似乎不起作用

时间:2012-11-29 15:59:29

标签: javascript jquery

我在各个地方都使用了event.preventDefault()event.stopPropagation(),但要让它发挥作用似乎总是有点困难。

我现在用实例打了一堵墙: -

$("#existing_Flavours").on("keydown", function(event){
    switch(event.which){
        case 9:
            //tab called permit
            break;
        default:
            event.preventDefault();
            event.stopPropagation();
    } // end switch
});

我希望tab键可以正常工作,但没有别的。

无休止地绕过这个,无论我怎样都无法阻止正常的击键发生。

3 个答案:

答案 0 :(得分:2)

如果元素是动态的,你需要将事件委托给绑定keydown时实际存在的元素:

$(document).on("keydown", "#existing_Flavours", function(event){
   switch(event.which){
      case 9:
           //tab called permit
          break;
      default:
           //event.preventDefault();
           //event.stopPropagation();
           // or just use return false
           return false;
    }
});​

答案 1 :(得分:0)

我的猜测是它与哪些事件实际导致角色出现有关。我会尝试绑定keydown keyup keypress以确保你抓住所有这些。

答案 2 :(得分:-1)

好吧,首先,我不喜欢切换到很多(可能这无关),试试:

$("#existing_Flavours").live("keydown", function(event){
    var keyCode = event.keyCode || event.which; 

    if (keyCode != 9) { 
      event.preventDefault(); 
    }

});