Ian*_*ood 8 jquery submit detect
我有一个表格如下:
<form id="my-form" ...>
...
<button type="submit" name="bttnsubmit" value="1">The first button</button>
<button type="submit" name="bttnsubmit" value="2">The last button</button>
</form>
Run Code Online (Sandbox Code Playgroud)
我想用以下方法检测哪个触发了表单提交事件:
$('#my-form').submit(function(){
//psuedo code
if($('[name=bttnsubmit]').val() == 1) {
....
}
});
Run Code Online (Sandbox Code Playgroud)
显然,选择器将始终返回它遇到的第一个bttnsubmit元素的值,所以我需要一些其他魔术选择器或过滤器或其他东西.
我已经看过$('[name=bttnsubmit][clicked=true]')吹捧但是我的尝试还没有奏效......
我当然可以求助,$('[name=bttnsubmit]').click()但我希望能够在表格提交活动中实现我的目标.
任何帮助/提示非常感谢.
mus*_*fan 12
我不知道是否有任何内置事件数据(可能存在),但我想到的一个想法是处理按钮的click事件并存储值的全局引用.像这样的东西:
var ButtonValue;
$('button[type="submit"]').click(function(e){
ButtonValue = $(this).val();
});
$('#my-form').submit(function(){
//psuedo code
if(ButtonValue == 1)
{
....
}
});
Run Code Online (Sandbox Code Playgroud)
这个答案是@ musefan的答案的改进.
避免全局变量.最好将数据保存在表单中:
$('button[type=submit]').click(function (e) {
var button = $(this);
buttonForm = button.closest('form');
buttonForm.data('submittedBy', button);
});
Run Code Online (Sandbox Code Playgroud)
在提交处理程序中只需获取它:
$('#my-form').submit(function (e) {
var form = $(this);
var submittedBy = form.data('submittedBy');
if(submittedBy.val() == 1) {
// Any code here...
}
});
Run Code Online (Sandbox Code Playgroud)
可以通过点击"输入"提交表格.为了避免null在submittedBy变量:
var submittedBy = form.data('submittedBy') || form.find('button[type=submit]:first');
Run Code Online (Sandbox Code Playgroud)