2010-09-28 75 views
1

嗨,我有幾個表單字段我想上一個按鈕控件的點擊發送到動作1,但 按鈕2它的點擊發送到行動2.目前我使用js在點擊時動態改變表單動作。但有沒有其他解決方案。我不能在用同樣的方法提交之後進行檢查,必須是兩種不同的方法。一種形式兩項行動

在這種情況下的2個按鈕是圖(HTML數據需要被顯示)並下載(以csv文件相同的數據)。我使用CakePHP 1.2,但我覺得這是更通用的問題

+1

停止。不要試試這個。讓您的(服務器端)控制器根據提交的數據在內部轉發請求(只有激活的按鈕會成功)。 – Quentin 2010-09-28 06:13:31

回答

0

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

一種形式的只能有一個動作。這是HTML的限制。要在客戶端解決它,你需要Javascript。

聽起來最好的想法是給每個提交按鈕一個獨特的namevalue。這將像其他表單元素一樣提交,因此您可以在Controller中檢測哪個按鈕被點擊。從那裏它應該只是在正常輸出和下載之間切換控制器中的一些View邏輯的問題。

+1

這裏有一個例子http://github.com/infinitas/infinitas/blob/dev/app_controller.php#L579 – dogmatic69 2010-09-28 19:15:21

+0

感謝,但你可以粘貼確切的代碼或行沒有的,我需要在+1反正看你 – aWebDeveloper 2010-10-14 05:30:28

0

我發現有幾個解決方案

  1. 常規JavaScript到其中的表單操作更換按鍵的
  2. AJAX的點擊數據發送到兩個獨立的行動上的單獨的按鈕點擊
  3. 正如暗示做服務器端的處理(這在我的情況下是不容易的)