jquery检测哪个按钮提交了表单

我有一个表格,内容如下:

...

我想用以下方法检测哪个触发了表单提交事件:

 $('#my-form').submit(function(){ //psuedo code if($('[name=bttnsubmit]').val() == 1) { .... } }); 

显然,选择器将始终返回它遇到的第一个bttnsubmit元素的值,因此我需要一些其他魔术选择器或filter或其他东西。

我已经看到$('[name=bttnsubmit][clicked=true]')吹捧但是我的尝试还没有奏效……

我当然可以求助于$('[name=bttnsubmit]').click()但是我希望能够在表单提交事件中实现我的目标。

任何帮助/提示非常感谢。

我不知道是否有任何内置事件数据(可能存在),但我想到的一个想法是处理按钮的click事件并存储值的全局引用。 像这样的东西:

 var ButtonValue; $('button[type="submit"]').click(function(e){ ButtonValue = $(this).val(); }); $('#my-form').submit(function(){ //psuedo code if(ButtonValue == 1) { .... } }); 

这个答案是对@ musefan的答案的改进。

避免全局变量。 最好将数据保存在表单中:

 $('button[type=submit]').click(function (e) { var button = $(this); buttonForm = button.closest('form'); buttonForm.data('submittedBy', button); }); 

在提交处理程序中只需获取它:

 $('#my-form').submit(function (e) { var form = $(this); var submittedBy = form.data('submittedBy'); if(submittedBy.val() == 1) { // Any code here... } }); 

可以通过点击“输入”提交表格。 要在submittedBy变量中避免null

 var submittedBy = form.data('submittedBy') || form.find('button[type=submit]:first'); 

关于你的陈述:

我已经看到$('[name = bttnsubmit] [clicked = true]’)吹捧但是我的尝试还没有奏效……

我发现其他地方没有正确解释。 这不是一件自动的事情。 您仍需要通过在单击提交按钮时添加“单击”属性来进行设置。

 $("#my-form input[type=submit]").click(function () { $("input[type=submit]", $(this).parents("form")).removeAttr("clicked"); $(this).attr("clicked", "true"); }); $("#my-form").submit(function () { var clickedSubmitValue = $("input[type=submit][clicked=true]").val(); if (clickedSubmitValue == "1") { ... } }); 

类似于此处的示例。