1

我正在实现 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) {}

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

谢谢

4

3 回答 3

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

工作示例

于 2013-03-21T15:21:31.203 回答
0

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

$(document).ready(function(e){
    $(document).keypress(function(e){
        if(e.keyCode == 13)
           $("#myFOrm").submit();
    });
});
于 2013-03-21T15:17:32.283 回答
0

密钥已经绑定到提交 HTML 表单,但这里return是您如何使用各种方法监听按键事件的方式:

常规 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');
});
于 2013-03-21T16:48:04.237 回答