2012-11-16 41 views
1

我在頁面上有兩種形式。對用戶來說,它看起來像1表格,我真的希望它是一種形式。但是我試圖重複使用代碼和包含東西的方式,我無法避免源代碼中的兩種形式......試圖作爲一個行爲。作爲一個提交多個表單

我不想做AJAX提交,我想一個正常的提交後,我的表單處理程序具有重定向它。我怎麼能提交這兩個,並獲得在服務器端有意義的值。像$_POST['form1]['whatever']$_POST['form2]['thing']

也許採取形式2的所有輸入,用前綴重命名所有輸入,並將它們附加到形式1?我無法找到這樣做的一個非雜亂的方式。我不認爲我需要代碼,只是一個計劃。最不明智的想法獲勝。

回答

3

也許從表單2中獲取所有輸入,用 前綴重命名所有輸入,然後將它們附加到表單1中?

那正是你必須做什麼。如果沒有代碼示例,不會有太多的答案,所以在這裏你去。

$("#form2 :input").appendTo("#form1")[0].submit() 

現在在php中你將有$_POST['thing']包含一個具有兩個值的數組。另外,您可以從窗口2重命名所有的輸入:

$("#form2 :input").attr("name",function(name){ 
    return name + "_form2"; 
}).appendTo("#form1")[0].submit(); 
1

你可以嘗試收集一種形式的值與jQuery.serializeArray(),然後生成hidden輸入與變量存儲結果,以前被稱爲jQuery.serializeArray()名稱和值,並將其插入到第二種形式上submit事件的形式。

0

你應該能夠兩種形式字段PHP結合成一個單一的形式。如果你的代碼不允許,它的形狀必須很糟糕。

如果使用簡單的腳本,則應該能夠形式切割成製造領域的部分,併產生形式其他部分輪廓,或者作爲單獨的腳本,或簡稱爲獨立的功能。

即:

<?php 

    function form_body($params) { 
     // here's the code for echoing fields according to $params 
    } 

    function form($params) { 
     // here's the code to build the form properties 
     $f_properties = '....'; 
     echo '<form '.$f_properties.'>'; 
     form_body($params); 
     echo '</form>'; 
    } 

?> 

然後,它只是一個從Form 1和Form結合$params得到確定的形式的問題。

如果你使用OOP,它可能很容易推導含有這兩種形式的新類,並將其輸出各自的領域。

這是非常簡單的建議,但你不提供任何來源,以幫助重構,所以我只能提供模糊的/通用的代碼示例。

把js的方式結合在客戶端的表單會變成很多問題來維護和演化代碼,並帶來很多問題(安全性不是其中的一部分)。