点击进入时发送表格

时间:2010-03-30 14:28:51

标签: javascript jquery html forms

我在启用jQuery的网站上有一个表单。表单没有<input type="submit">按钮。因此,当您点击 enter 时,它不会被提交。模仿这种行为的推荐方法是什么?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head><title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"><!--
$(function(){
    $("form input:first").focus();
});
//--></script>
</head>
<body>

<form action="" method="post">
<input type="text" name="user">
<input type="password" name="pass">
</form>

</body>
</html>

更新

我只想尝试为现有表单添加快速简单的改进。我完全理解所有关于可访问性的问题,但应用程序本身需要JavaScript,如果没有它,它将无法运行。提交表单的后备几乎没用。

7 个答案:

答案 0 :(得分:11)

在表单中放置一个提交按钮,并使用JavaScript使其不可见。这符合两个目的:

  1. 输入按钮将有效,因为 存在提交按钮
  2. 非JavaScript用户可以使用您的表单

答案 1 :(得分:4)

我会捕获输入元素的按键事件,注意键码13(输入)并调用提交。像这样:

$("form input").keypress(function(ev){
    if (ev.keyCode == 13) {
        $("form")[0].submit();
    }
});

此代码未经测试。

答案 2 :(得分:2)

为什么不只是使用CSS隐藏按钮,甚至更好的JS:在这种情况下,表格将保持对已禁用JS的人可访问,并且您应该自动输入

答案 3 :(得分:1)

使用jquery表单插件。

http://malsup.com/jquery/form/

答案 4 :(得分:1)

推荐?我不确定是否建议模仿这种行为!

虽然您可以尝试检测Enter的keypress,但是有一些关于Enter press应该如何工作的微妙浏览器差异,这与您生成的内容不完全相同。如果没有JavaScript,你的表单将无法工作,这是不理想的。

所以放一个提交按钮。如果你真的坚持按钮不应该出现在页面上(我不确定这是个好主意),你总是可以绝对地将它放在左边 - 页面的手边没有人可以看到它。

请注意,尽管没有按钮,WebKit仍会提交表单。如果您必须使用凌乱的脚本对其进行修补,请确保取消按键的默认操作,否则您可能会获得双重提交。

答案 5 :(得分:1)

当您在文本输入字段中按Enter键时,

Safari,Firefox,Opera和IE8 都会提交表单。既不是提交按钮也不是javascript需要。 Try yourself

(没有测试IE6 / 7,但我95%确定他们也这样做。)

我同意其他人认为捕获输入并不是一个好主意。

更新:以上情况属实,但Firefox 提交包含密码字段且没有提交按钮的表单。不知道为什么,有谁可以看到背后的原因?

更新2 :...除了IE之外,如果只有一个输入字段。

答案 6 :(得分:0)

我为了相同的目的使用了以下的东西但是没有用于jquery尝试这可能对你有所帮助。

function submitenter(myfield,e)
  {
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;

    if (keycode == 13)
    {
        myfield.form.onsubmit();
        return false;
    }
    else
     return true;
  }