我无法删除分配给'enter'键的'触发器'

时间:2014-01-11 17:49:08

标签: javascript jquery

我有点问题。当按下键 Enter 时,我已经使用jQuery的方法trigger在按钮上启动事件click。我需要删除该触发器(将来,按键 Enter ,不要触发按钮上的事件click)。 这是代码:

$(document).keyup(function(e){
    if (e.keyCode == 13) $('#thebutton').trigger('click');
});

有可能吗?感谢。

嗨,我在找到解决方案后编辑我的帖子。 我的整个问题是:

$('#thebutton').on('click', function(){
     alert('click on the button');
  });

$(document).on('keyup',function(e){
     if (e.keyCode == 13) $('#thebutton').trigger('click');

// This cause a loop of alert() popups pressing key 'enter'
// Alex fix it in this way:

$('#thebutton').on('click', function(){
        alert('hi there');
});

    var someContition = false;
    $(document).on('keypress',function(e){
        if (e.keyCode == 13  && !someContition) $('#thebutton').trigger('click');

秘诀是keyup改变keypress。测试代码我发现它不是必要的标志。 谢谢你们所有人。

4 个答案:

答案 0 :(得分:0)

使用按键代替。试试这个 DEMO

var someContition = false; 
$(document).on('keypress',function(e){
 if (e.keyCode == 13  && !someContition) $('#thebutton').trigger('click');
});

$('#thebutton').on('click', function(){
 alert('hi there');
});

答案 1 :(得分:0)

如前所述,请使用on()off(),但不要使用click事件。取而代之的是keyup,因为那是你真正想要删除的内容。

$(document).on('keyup',function(e){
   if (e.keyCode == 13) $('#thebutton').trigger('click');
});

然后是

$(document).off('keyup');

如果你仍然需要键盘事件(例如其他键),你必须设置一个标志或其他东西,并在触发按钮点击之前检查它。

答案 2 :(得分:0)

这可能听起来很愚蠢,但只是评论或删除该行:

$(document).keyup(function(e){
    //if (e.keyCode == 13) $('#thebutton').trigger('click');  //Comment or delete this line
});

(如果你无法控制这段代码,你应该在问题中指明它,如果是这样的话:愚蠢地回答愚蠢的问题,如果没有,只要忽略这一点;))。

干杯

答案 3 :(得分:0)

以下是HTML:

<input type="button" id="clickme" value="cick me "/>

以下是jquery:

 $(document).on('keyup',function(e){
     if (e.keyCode == 13) $('#clickme').trigger('click');
  });
  $('#clickme').click(function(){
      alert('i was clicked !');
  });

这是实例:http://jsfiddle.net/tB66Y/