如何防止 preventDefault 从 $_POST 中删除提交按钮?

how can I prevent preventDefault from removing the submit button from $_POST?

我有一个带有两个提交按钮的表单:

<form method="POST">
<input type="submit" name="Update" value="Update"/>
<input type="submit" name="Submit" value="Delete"/>
</form>

我需要在提交表单之前对表单进行一些操作,所以我使用了这个 jQuery:

$('form').submit(function (e) {
    e.originalEvent && e.preventDefault();
    //manipulate stuff
    this.submit();
});

问题是,我需要知道在后端点击了哪个按钮但是

$_POST['Submit']$_POST['Delete']

都是undefined。 jQuery.

似乎从 post 数组中删除了输入

解决该问题的好方法是什么?

我建议您添加一个操作作为隐藏的输入类型和两个按钮,它们可能是也可能不是表单的一部分。向按钮添加事件侦听器以了解何时单击这些按钮并相应地更改输入操作字段,然后提交表单。

首先,给您的表单一个名称或 ID,而不是 ID。

<input type="hidden" name="action" value=""/>

<input type="submit" name="Update" value="Update"/>
<input type="submit" name="Submit" value="Delete"/>

$('input[type="submit"][name="Update"]').click(function() {
   $('input[type="hidden"][name="action"]').val('Update');
   $("#something").submit();
});
$('input[type="submit"][name="Submit"]').click(function() {
   $('input[type="hidden"][name="action"]').val('Delete');
   $("#something").submit();
});

我会用每个按钮的两个事件处理程序和一个隐藏的输入来告诉 php 请求哪个操作。另外,我建议您查看 Ajax。 代码如下:

$('#update').click(function (e) {
    e.originalEvent && e.preventDefault();
    //manipulate stuff
    $("form").append("<input type = 'hidden' name = 'action' value = 'update' />");
    this.submit();
});
$('#delete').click(function (e) {
    e.originalEvent && e.preventDefault();
    //manipulate stuff
    $("form").append("<input type = 'hidden' name = 'action' value = 'delete' />");
    this.submit();
});

在后端,您将获得在 $_POST['action'] 中提交的内容,即 "update" 或 "delete"