2015-01-03 60 views
1

我有兩個提交按鈕的形式:

<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數組中移除。

什麼是解決該問題的好方法?

+0

,您可以捕捉哪一個客戶端(與jQuery)和更新隱藏的表單域? –

+0

@BobBrown我在想這就是我必須要做的 – andrew

+0

因爲你手動提交表單(它不再由用戶實際提交),所以刪除了按鈕。我建議Rejanu的解決方案。 –

回答

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']提交後端側即要麼將是「更新」或「刪除」

+1

太好了,我可以用'$(e.originalEvent.explicitOriginalTarget)'提取原始按鈕並創建一個基於該按鈕的隱藏輸入 – andrew

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(); 
});