我有一个沼泽标准的登录表单-一个电子邮件文本字段,一个密码字段和一个提交按钮的AIR项目,使用HTML/jQuery。当我在表单上按Enter键时,整个表单的内容消失了,但表单没有提交。有人知道这是Webkit的问题吗(Adobe AIR使用Webkit进行HTML),还是我把事情搞砸了?

我试着:

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

但是这既没有停止清除行为,也没有提交表单。没有与表单相关的操作——这可能是问题所在吗?我可以把一个javascript函数的行动?


当前回答

你也可以简单地在页面的表单代码中添加onsubmit="return false"来防止默认行为。

然后钩(。在javascript文件中使用jQuery将表单的提交事件提交给任何函数。

下面是一个示例代码来提供帮助:

HTML

<form id="search_form" onsubmit="return false">
   <input type="text" id="search_field"/>
   <input type="button" id="search_btn" value="SEARCH"/>
</form>

Javascript + jQuery

$(document).ready(function() {

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

这是在2011-04-13,Firefox 4.0和jQuery 1.4.3中运行的

其他回答

返回false以防止继续击键。

除了返回false,正如Jason Cohen提到的。你可能还需要preventDefault

e.preventDefault();

我发现今天按回车键时,按键事件没有被触发,所以你可能想要切换到keydown()或keyup()代替。

我的测试脚本:

        $('.module input').keydown(function (e) {
            var keyCode = e.which;
            console.log("keydown ("+keyCode+")")
            if (keyCode == 13) {
                console.log("enter");
                return false;
            }
        });
        $('.module input').keyup(function (e) {
            var keyCode = e.which;
            console.log("keyup ("+keyCode+")")
            if (keyCode == 13) {
                console.log("enter");
                return false;
            }
        });
        $('.module input').keypress(function (e) {
            var keyCode = e.which;
            console.log("keypress ("+keyCode+")");
            if (keyCode == 13) {
                console.log("Enter");
                return false;
            }
        });

在键盘上输入“A Enter B”时控制台的输出:

keydown (65)
keypress (97)
keyup (65)

keydown (13)
enter
keyup (13)
enter

keydown (66)
keypress (98)
keyup (66)

在第二个序列中,您可以看到'keypress'丢失了,但是按下/释放keydown和keyup寄存器代码'13'。 根据jQuery的keypress()函数文档:

Note: as the keypress event isn't covered by any official specification, the actual behavior encountered when using it may differ across browsers, browser versions, and platforms.

在Server 2012 R2上的IE11和FF61上测试

在HTML代码中:

<form action="POST" onsubmit="ajax_submit();return false;">
    <b>First Name:</b> <input type="text" name="firstname" id="firstname">
    <br>
    <b>Last Name:</b> <input type="text" name="lastname" id="lastname">
    <br>
    <input type="submit" name="send" onclick="ajax_submit();">
</form>

在Js代码中:

function ajax_submit()
{
    $.ajax({
        url: "submit.php",
        type: "POST",
        data: {
            firstname: $("#firstname").val(),
            lastname: $("#lastname").val()
        },
        dataType: "JSON",
        success: function (jsonStr) {
            // another codes when result is success
        }
    });
}

我现在用的

$("form").submit(function(event){
...
}

首先,我在提交按钮中添加了一个事件处理程序,它为我产生了一个错误。