【问题标题】:Retrieve keypress event检索按键事件
【发布时间】:2013-03-21 15:07:36
【问题描述】:

我正在实现 keypress 以在按下 enter 时提交。我做了一个 jquery 插件,我需要一些帮助:

jQuery.fn.enterPress = function(obj, button) {          
            if (e.which == 13) {
                jQuery(button).click();

            }           
    };

在这个函数中,我检索 obj( html 表单) 和按钮(将被点击的那个)。

我不确定,但我可能不需要这个“obj”。 我的问题是我没有这个'e'。我试了很多方法,但我不知道我该如何找回它。

我做了这个:

jQuery('#' + obj.id).keypress(function(e) {}

但是这个函数被触发了两次,有时是三次。

谢谢

【问题讨论】:

  • jQuery 已经有一个keypress 方法,你可以直接使用它。你有理由自己开发吗?
  • 实际上,我想要更通用的东西。就像传递属性(在我的例子中,按钮 id。

标签: javascript jquery keypress enter


【解决方案1】:

jQuery 有一个内置的方法,称为 keypress。

$("#target").keypress(function(event) {
  if ( event.which == 13 ) {
     event.preventDefault();
     // do stuff here 
  }
}

如果您想添加一个更通用的方法来将“输入”按键事件绑定到 jQuery 对象,然后单击按钮(正如您在问题和评论中提到的那样),您可以执行以下操作:

var $button = jQuery('#somebutton');

jQuery.fn.enterPress = function(callback) {
    jQuery(this).keypress(function(event) {
        if ( event.which == 13 ) {
            event.preventDefault();
            callback();
        }
    });
};

$button.click(function(){
    alert('button was clicked');
})

jQuery('#target').enterPress(function() {
    // what you want to happen after enter is pressed
    $button.click();
});

Working Example

【讨论】:

  • 你好@Cody,我试过你的答案,preventdefault 没有用。他的按钮没有被点击。另外,我尝试了 isPreventDefault() 并且总是“假”。另外,我尝试了 e.stopPropagation(),它起作用了,但仅在第二次回车时触发(如果页面在字段中加载了焦点并按回车键)。我在 Jquery.fn.enterPress 中放置了一个警报并且总是触发,但是 obj.keypress... 仅在第二次点击时。
  • 嘿@viictoorh,我已经更新了我的答案以及一个工作示例:jsfiddle.net/XNKsq
  • 谢谢@Cody。有效。我只是对我的提案进行一些修改。
【解决方案2】:

此代码在点击“13 keyCode”==“Enter”时发送一个表单

$(document).ready(function(e){
    $(document).keypress(function(e){
        if(e.keyCode == 13)
           $("#myFOrm").submit();
    });
});

【讨论】:

    【解决方案3】:

    return 键已经绑定到提交 HTML 表单,但以下是您使用各种方法监听按键事件的方法:

    常规 JavaScript:

    document.getElementById('yourFormId').addEventListener('keypress', function(e) {
        if(e.keyCode === 13)
            document.getElementById('yourButtonId').click();
    }, false);
    

    还有普通的 JavaScript:

    document.getElementById('yourFormId').onkeypress = function(event) {
        if(event.keyCode === 13)
            document.getElementById('yourButtonId').click();
    };
    

    或 jQuery:

    $('yourFormId').keypress(function(event) {
        if(event.which === 13)
            $('yourButtonId').trigger('click');
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多