2012-05-29 53 views
0

這是一個跟進這個問題:如何將一個表單元素的值複製到另一個表單元素?

How can I manipulate a form/inputs to be ignored when a form is submitted

我已在信息顯示,形式,展示()S和隱藏()S等大多數似乎一切都進展得相當好。在哪裏我可以使用一些輸入 - 不需要雙關 - 是關於如何獲取表單中的新值並將這些值複製到僅顯示div作爲ajaxSuccess的一部分。

我可以複製type = text和textarea,但複選框,多選和無線電怎麼辦?

總之,一旦表單中的新值被提交,我需要用這些新值更新頁面(而不是表單)。也許我需要爲每個表單元素類型編寫一些?即便如此,我還不確定從哪裏開始。

如果我的工作不清楚,請原諒我。如果是這種情況,請問你想讓我澄清一下。

+0

你嘗試過':input'選擇器嗎? –

回答

0

最有意義的方法是讓處理表單的腳本返回ajaxSuccess數據中的表單內容。這裏有一個例子:

的JavaScript:

$.ajax({ 
    url: 'ajax/process.php', 
    success: function(data) { 
     // Load returned data into page 
     $('#result').html(data); 
    } 
}); 

的PHP:

var $input1 = $_POST['input1']; 
var $input1 = $_POST['input1']; 

// DO SOMETHING WITH VARS AND IF SUCCESSFUL RETURN 

if($success){ 
    echo "Thanks! Here is your info: ".$input1." and ".$input2; 
} 

一旦數據已經返回,你可以操縱它反正你喜歡。例如,如果需要從表單中分離出不同的值,則可以從PHP中發回逗號分隔的字符串,並使用方法從該字符串中創建一個數組。

希望這是有幫助:)

+0

Thanks @Steve O - 不幸的是,我不認爲ExpressionEngine的SafeCracker + Ajax會返回一個包含已更新字段+值的對象。我正在尋找一種簡單或至少「合理」的方式來查看輸入控件(例如多選),識別它是什麼,然後更新頁面上其他地方的「雙胞胎」控件。我在From控件中使用了一個數據屬性(字面上)爲To。可能是可以的,是嗎? –

+0

順便說一句,我的計劃B是隻有一個單一的形式,繼續使用disabled =「禁用」,但使用addClass/removeClass「切換」如何表單樣式。 disable = false版本看起來像一個真正的形式,disable = true與class =「is-disabled」(例如)將樣式表單隱藏邊框等。問題是,如果用戶做出改變然後點擊取消。我將如何將修改恢復爲點擊編輯鏈接之前的值? –

+0

Duh ?!剛剛發現了Reset形式。看起來計劃B將是理想的解決方案。 –

0

我想說的是你最好的選擇就是完全採取不同的方法,它的更新後從數據庫重新加載您的內容 - 通過一個AJAX調用在這種情況下。原因是您從表單發佈的內容可能與保存到數據庫的內容不匹配,因爲某些字段類型可能會處理和更改它們傳遞的數據(例如剝離標籤,格式化文本等)。通過這種方式,刷新的內容與來自Channel Entries調用的相同內容時顯示的內容完全匹配。

相關問題