0

我在各个地方都使用过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
});

我希望制表键工作,但没有别的。

无休止地绕了这个圈子,无论如何我都无法阻止正常的击键发生。

4

3 回答 3

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;
    }
});​
于 2012-11-29T16:07:27.030 回答
0

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

于 2012-11-29T16:04:08.153 回答
-1

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

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

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

});
于 2012-11-29T16:06:58.527 回答