私は非常に動的なフォームを持ち、トップレベルの要素とやり取りすることでフォームの下位レベルの要素を完全に変換します。私は状態を維持する簡単な方法を望んでいたので、ユーザがトップレベルカテゴリのフォームデータに部分的に入力した場合、他のものに切り替えることができました(入力されたすべてのデータと実際の入力要素を一時的に失う)その前のトップレベルカテゴリに戻ってクリックし、そのまますべてを復元します。フォームの「スナップショット」を取得しようとしましたが、値が失われています
私のような何かをするために、最上位の要素をクリックの上、のような単純な何かを計画していた。
form_state[category] = $('form').html();
category = this.val();
if (form_state[category]) {
$('form').html(form_state[category])
}
はしかし、私はすぐに、フォームのHTMLフォームの値を含めていなかったことがわかりましたユーザーが操作した要素(すべて元のデフォルト値でした)。だから私は、私は、フォーム内の要素の値のすべてを収集し、フォームの内部HTMLをリセットした後、それらを手動でリセットする必要があることに気づいた...だから私はのようなものを考えています。その後、
$('input, select, textarea').each(function(el) {
values.push($(el).val());
}
とそれらとのようなものを持つ要素の更新を超える反復-RE:誰もが前にこのようなものに遭遇した場合
if (form_state[category]) {
$('form').html(form_state[category])
$('input, select, textarea').each(function(el, i) {
$(el).val(values[i]);
}
}
をしかし、私は思っていたし、手動でこれらを反復処理よりもよりよい解決策を知っていますか?逆のform.serialize()を行う方法があるかどうか疑問に思っていましたか?そうすれば、シリアライズされたフォームのスナップショットも保存でき、フォーム全体をシリアル化されたデータで更新できます。 .serlize()はエスケープされた文字列を返すので、仕事よりももっとうまくいくかもしれないし、手作業でフォーム要素型を繰り返し処理する方が良い方法だと思われます...?
本当に答えはありますが、[Sisyphus](http://simsalabim.github.com/sisyphus/)が役立つかもしれません。 –