嗨,我有幾個表單字段我想上一個按鈕控件的點擊發送到動作1,但 按鈕2它的點擊發送到行動2.目前我使用js在點擊時動態改變表單動作。但有沒有其他解決方案。我不能在用同樣的方法提交之後進行檢查,必須是兩種不同的方法。一種形式兩項行動
在這種情況下的2個按鈕是圖(HTML數據需要被顯示)並下載(以csv文件相同的數據)。我使用CakePHP 1.2,但我覺得這是更通用的問題
嗨,我有幾個表單字段我想上一個按鈕控件的點擊發送到動作1,但 按鈕2它的點擊發送到行動2.目前我使用js在點擊時動態改變表單動作。但有沒有其他解決方案。我不能在用同樣的方法提交之後進行檢查,必須是兩種不同的方法。一種形式兩項行動
在這種情況下的2個按鈕是圖(HTML數據需要被顯示)並下載(以csv文件相同的數據)。我使用CakePHP 1.2,但我覺得這是更通用的問題
HTML5對這個
<form action="/url" id="myForm">
<input type="submit" value="save1" formAction="/url1" />
<input type="submit" value="save2" formAction="/url2" />
</form>
一個formaction屬性這裏是一個備用,如果你需要它。
if (!('formAction' in document.createElement('input'))){
$('form').on('click', 'input[type=submit]', function (e) {
var attr = this.getAttribute('formAction');
if (attr) {
this.action = attr; //Set the form's action to formAction
}
});
}
一種形式的只能有一個動作。這是HTML的限制。要在客戶端解決它,你需要Javascript。
聽起來最好的想法是給每個提交按鈕一個獨特的name
和value
。這將像其他表單元素一樣提交,因此您可以在Controller中檢測哪個按鈕被點擊。從那裏它應該只是在正常輸出和下載之間切換控制器中的一些View邏輯的問題。
這裏有一個例子http://github.com/infinitas/infinitas/blob/dev/app_controller.php#L579 – dogmatic69 2010-09-28 19:15:21
感謝,但你可以粘貼確切的代碼或行沒有的,我需要在+1反正看你 – aWebDeveloper 2010-10-14 05:30:28
我發現有幾個解決方案
停止。不要試試這個。讓您的(服務器端)控制器根據提交的數據在內部轉發請求(只有激活的按鈕會成功)。 – Quentin 2010-09-28 06:13:31