当前位置:  开发笔记 > 编程语言 > 正文

使用jQuery在'Enter'上提交表单?

如何解决《使用jQuery在'Enter'上提交表单?》经验,为你挑选了8个好方法。

我有一个bog标准的登录表单 - 一个电子邮件文本字段,一个密码字段和一个使用HTML/jQuery的AIR项目的提交按钮.当我在表单上按Enter键时,整个表单的内容消失,但表单未提交.有谁知道这是否是一个Webkit问题(Adobe AIR使用Webkit for HTML),或者我是否已将事情搞砸了?

我试过了:

$('.input').keypress(function (e) {
  if (e.which == 13) {
    $('form#login').submit();
  }
});

但这既没有阻止清算行为,也没有提交表格.没有与表单相关的操作 - 这可能是问题吗?我可以在动作中加入javascript函数吗?



1> NoBrainer..:
$('.input').keypress(function (e) {
  if (e.which == 13) {
    $('form#login').submit();
    return false;    //<---- Add this line
  }
});

注意:您接受了bendewey的答案,但它对e.preventDefault()的描述不正确.看看这个stackoverflow答案: event.preventDefault()与return false

从本质上讲,"return false"与call e.preventDefaulte.stopPropagation().


@mbokil除了在使用jQuery时,它在IE8中是相同的.和IE7.和IE6.
请注意它们不一样.IE8没有e.preventDefault.对于IE8,使用event.returnValue = false;

2> bendewey..:

除了Jason Cohen提到的返回假.您可能还必须阻止默认

e.preventDefault();


正如@NoBrainer所说,这是错误的:在jQuery管理的事件中`return false`会自动调用e.preventDefault()

3> karim79..:

不知道它是否有用,但您可以尝试模拟提交按钮单击,而不是直接提交表单.我在生产中有以下代码,它工作正常:

    $('.input').keypress(function(e) {
        if(e.which == 13) {
            jQuery(this).blur();
            jQuery('#submit').focus().click();
        }
    });

注意:jQuery('#submit').focus()会在按下enter时使按钮生动.



4> Jason Cohen..:

返回false以防止击键继续.



5> Zack The Hum..:

有什么理由你必须挂钩并测试回车键吗?

你不能简单地添加一个

 

到你的表格,并在按下输入时自然提交?你甚至可以勾住表单的onsubmit动作,如果你想要的话,从那里调用验证函数......

您甚至可以使用onsubmit测试来查看您的表单是否正在提交,但如果您打电话,它将无法使用form.submit().



6> bvaughn..:

这是一种作为JQuery插件执行此操作的方法(如果您想重新使用该功能):

$.fn.onEnterKey =
    function( closure ) {
        $(this).keypress(
            function( event ) {
                var code = event.keyCode ? event.keyCode : event.which;

                if (code == 13) {
                    closure();
                    return false;
                }
            } );
    }

现在,如果你想用这种类型的功能来装饰它,它就像这样简单:

$('#your-input-id').onEnterKey(
    function() {
        // Do stuff here
    } );



7> 小智..:

您还可以简单地添加onsubmit="return false"到页面中的表单代码以防止默认行为.

然后将表单的事件挂钩(.bind.live)submit到javascript文件中的jQuery的任何函数.

以下是帮助的示例代码:

HTML

Javascript + jQuery

$(document).ready(function() {

    $('#search_form').live("submit", function() {
        any_function()
    });
});

这是在2011-04-13,使用Firefox 4.0和jQuery 1.4.3



8> Hoàng Vũ Tgt..:

这是我的代码:

  $("#txtMessage").on( "keypress", function(event) {
    if (event.which == 13 && !event.shiftKey) {
        event.preventDefault();
        $("#frSendMessage").submit();
    }
    });

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有