【问题标题】:Detect which button was clicked检测点击了哪个按钮
【发布时间】: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.通过隐藏的输入字段传递必要的数据...您需要找出单击了哪个按钮(因此您可能希望首先处理按钮上的单击事件,而不是表单的提交事件),然后您使用适当的值添加/填充隐藏字段,然后让表单提交。

标签: jquery html forms


【解决方案1】:

您可以使用以下代码打印处于活动状态的按钮的值:

$("form").submit(function() {
console.log($(document.activeElement).val());
}

我建议您参考以下链接,其中讨论了与提交按钮-JQuery 相关的所有错误的答案

jQuery: how to get which button was clicked upon form submission?

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多