我有一个包含多个提交按钮的表单,我正在通过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();
});