如何通过JavaScript检测表单的提交方式?

我有一个包含多个提交按钮的表单,我正在通过JavaScript监听“提交”事件.我想知道哪个提交按钮或表单字段(如果用户按下’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>

单击“添加项目”或按回车/输入名称=“项目”将添加另一个表单域.

最后的说明

据我所知,没有办法检测哪个表单字段触发了表单提交.如果您需要阻止提交具有多个按钮和/或Enter / Return的表单,则需要使用< input type =“button”>并将事件处理程序绑定到要停止表单提交的表单字段.

解决方法:

如果你有多个提交按钮,你可以告诉他们每个人都有一个唯一的名称属性,如下所示:

<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)的形式出现.如果输入被命中,则源中的第一个按钮(在本例中为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();
});
上一篇:PHP FILTER_VALIDATE_FLOAT 过滤器


下一篇:html中form表单的隐藏与点击提交事件