【问题标题】:jQuery submit not triggered on ENTER keypress没有在 ENTER 按键上触发 jQuery 提交
【发布时间】:2018-05-29 15:16:18
【问题描述】:

一个非常简单的FORM和JS:

$('#gg').submit(function() {
    alert('s');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="gg" method="post">
    <input name="languageId" type="text">
    <input name="languageName" type="text">
</form>

.submit 不会通过在输入上按 Enter 来触发。但如果我有一个输入,它确实有效!

【问题讨论】:

  • 为什么要这样?
  • 您需要在form 中放置&lt;button type="submit" /&gt; 或&lt;input type="submit" /&gt; 才能使此行为生效
  • 您无需调用提交事件,只有具有单输入的表单默认为按回车提交。
  • 哇 HTML 2。感谢您的链接

标签: jquery html


【解决方案1】:

如果您向表单添加提交输入,则按 ENTER 键将提交表单。

    $('#gg').submit(function() {
        alert('s');
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="gg" method="post">
    <input name="languageId" type="text"/>
    <input name="languageName" type="text"/>
    <input type="submit"/>
</form>

【讨论】:

  • “仅当” 不正确。在输入上按 enter 时,将提交具有单个文本输入的表单。
  • @j08691 你是对的。我编辑了我的答案。感谢您指出这一点。
【解决方案2】:

实现此目的的一种方法是手动设置回车键,如下所示:

$('#gg input').keypress(function (e) { // listen to keypress on your input controls
    if (e.which == 13) {   // if enter key...
        $('#gg').submit(); // submit the form
    }
});

这是在行动: https://jsfiddle.net/8md75a6f/3/

【讨论】:

  • 真的不需要return false
  • 我不喜欢这个解决方案,或者你必须改变你的选择器。如果 OP 有多个表单,则将为每个表单提交表单 #gg
  • @RogerC 的答案可能更好,但我会在此处留下这个答案,以防对其他人有所帮助。
  • @Jonathan.Brink 或者在这种情况下将您的选择器更改为$(formselector input) $("#gg input")
【解决方案3】:

其实加个

<input type="submit" style="display: none;">

似乎解决了一切

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2014-02-09
    相关资源
    最近更新 更多