【发布时间】:2017-08-23 08:49:01
【问题描述】:
我有以下 jQuery:
$('form').one('submit', function(e) {
e.preventDefault();
var id = $(this).data("id");
$("input.id-"+id+".column-name").val($("span.column-name.id-"+id).html());
$("input.id-"+id+".column-ext").val($("span.column-ext.id-"+id).html());
$("input.id-"+id+".column-dept").val($("span.column-dept.id-"+id).html());
$(this).submit();
});
它工作得很好,除了现在它忽略了被点击按钮的名称。页面上的每个表单都有两个按钮,“保存”和“删除”。单击其中任何一个都会提交表单,并发布数据,但不会发布提交按钮的数据(它们都有相应的名称)。
如果我删除上面的代码,然后像往常一样提交表单,我会得到按下的按钮。
【问题讨论】:
-
这是因为当你通过代码调用
submit()函数时,会丢失按钮的相关点击事件,因此请求中不能添加按钮数据 -
有没有办法检测按下了哪个按钮?
-
不是来自程序触发的事件,不是。通常你可以在按钮上触发一个点击事件,但这对你不起作用,因为你最终会陷入无限循环
-
你可以 f.e.通过隐藏的输入字段传递必要的数据...您需要找出单击了哪个按钮(因此您可能希望首先处理按钮上的单击事件,而不是表单的提交事件),然后您使用适当的值添加/填充隐藏字段,然后让表单提交。