,你可以使用類似toQueryString
連載的形式,然後在MooTools的,更多的String.parseQueryString()
基於反向:
(function() {
Element.implement({
saveFormState: function() {
if (this.get('tag') !== 'form')
return;
this.store("defaults", this.toQueryString());
},
restoreFormState: function() {
if (this.get('tag') !== 'form')
return;
var vals = this.retrieve("defaults");
if (!vals.length)
return;
var self = this;
Object.each(vals.parseQueryString(vals), function(value, key) {
var el = self.getElement("[name=" + key + "]");
el && el.set('value', value);
});
}
});
})();
var f = document.id('f');
// save default
f.saveFormState();
document.getElement("button").addEvent("click", f.restoreFormState.bind(f));
這ough覆蓋大多數情況下,你可以隨時保存新的默認狀態。不過,需要用無線電和類似的東西來測試它。
這裏有一個基本的小提琴保存/恢復:http://jsfiddle.net/UWTUJ/1/
相關文檔:http://mootools.net/docs/more/Types/String.QueryString(更多)和http://mootools.net/docs/core/Element/Element#Element:toQueryString(核心)
您要保存所有的表單元素的名稱
暗示的依賴屬性/恢復。
我以前創建更復雜的保存/恢復狀態,即使回到場CSS類名,驗證消息等
正想着,到目前爲止是相同的 - 搶老「形式」標籤的孩子,將它們插入到新的表單並替換舊的表單標記。將「重置」按鈕按預期工作嗎? – 2012-03-13 11:56:41
嘗試這樣做: 變種oldFormChildren = $( 'editNodeForm')的getChildren(); VAR newForm =新元素( '形式',{ '身份證': 'editNodeForm', '方法': '後', '行動': '#' })。採用(oldFormChildren).replaces($ ( 'editNodeForm')); 似乎沒有工作壽。有任何想法嗎? – 2012-03-13 12:09:09
到目前爲止,它已經解決了這個問題 - 添加了記住當前節點數據的變量,並在按下重置按鈕時填充表單。但如果你只需要保存舊的表單數據,爲什麼不用$('editNodeForm')。toQueryString()並保存在一個簡單的字符串中,那麼仍然會喜歡更好的解決方案 – 2012-03-13 12:27:28