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

时间:2015-01-03 19:09:09

标签: php jquery forms

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

<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数组中删除输入。

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

2 个答案:

答案 0 :(得分:2)

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

首先,给你的表单一个名字或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();
});

答案 1 :(得分:2)

我会用每个按钮的两个事件处理程序和一个隐藏的输入来告诉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']中提交的内容,该内容将会是&#34;更新&#34;或&#34;删除&#34;