我有一个带有多个提交按钮的表单,并且正在通过JavaScript监听“提交”事件。我想知道哪个提交按钮或表单字段(如果用户按下“Enter / Return”)触发了提交事件。有没有一种方法可以获取用户单击或按下“Enter / Return”的HTML元素?

由于人们不了解我而更新:

这是在提交表单之前通过JavaScript进行的。不允许服务器端检测。我还需要处理通过用户按Enter或Return键提交的表单。

代码

<form action="" method="POST">
    <input type="text" name="first_name">
    <input type="text" name="item">
    <input type="submit" value="Add item">
    <input type="submit" value="Submit">
</form>

单击“添加项目”或在name =“item”内按Return / Enter,将添加另一个表单字段。

最后说明

据我所知,还没有办法检测哪个表单字段触发了表单提交。如果您需要防止提交具有多个按钮的表单和/或从Enter / Return返回表单,则需要使用并将事件处理程序绑定(bind)到要停止提交表单的表单字段。

最佳答案

如果您有多个提交按钮,则可以通过为每个按钮赋予唯一的名称属性来分辨,如下所示:

<input type="submit" name="submit1" value="Submit 1"/>
<input type="submit" name="submit2" value="Submit 2"/>
<input type="submit" name="submit3" value="Submit 3"/>

重点关注的主题将与表单提交一起发送,因此,如果单击名称为“submit2”的主题,则会以POST(或GET)的形式出现。如果按下enter键,则源中的第一个按钮(在本例中为Submit1)被视为默认按钮并随其发送。您可以将其设置为display:none,用作检测是否按下回车键或实际单击提交按钮的虚拟对象。

编辑:

为了回应您的评论,要捕获在某些元素中被按下的回车键,您可以使用jQuery。

请注意,您需要提供first_name和add_item id属性,并将add_item变成type =“button”而不是type =“submit”。

HTML:
<form action="" method="POST">
    <input type="text" name="first_name"/>
    <input type="text" id="item" name="item"/>
    <input type="button" id="add_item" value="Add item"/>
    <input type="submit" value="Submit"/>
</form>

JS:
$("#item").keydown(function(event){
    if(event.keyCode == 13) {
        addFields();

        event.preventDefault();
        event.stopPropagation();
    }
});

$("#add_item").click(function(event) {
    addFields();
});

10-06 08:21
查看更多