2011-01-05 14 views
12

私はfeildsetをクローンし、次に入力の内容を提出しようとしており、serializeを使って選択しています。それは適切に動作していますが、selectはその値を保持しません。私は見つけたいくつかの方法を試しましたが、何も動作していないようです。ここでは、現在のデータを複製し設定する方法を示します。jquery clone selectは値を保持しません

クローニング時にselectの値を保持する方法はありますか?

$('body').append('<form id="form-to-submit" style="visibility:hidden;"></form>'); 
var fieldsetName = $this.parents('.fieldsetwrapper'); 
$('#form-to-submit').html($(fieldsetName).clone()); 
var data = $('#form-to-submit').serialize(); 
+1

フィールドセット全体を複製する代わりに、wあなたが望むときにフィールドセットからJSオブジェクトとしてデータをシリアライズするだけでなく、後で復元するためにそのオブジェクトを使用します(それが後の場合)。それとも、あなたがクローンしている理由を誤解したことがありますか? – Phrogz

+1

'.html()'を '.clone()'と併用するのは良い考えではありません。クローンは要素を与え、 '.html()'は文字列を要求します。 –

+0

同じ問題はプロトタイプライブラリ – WonderLand

答えて

22

option要素はjavascriptのプロパティselected(しないようにして、現在のselectednessを維持しますselected属性と混同してください.のデフォルト値はです。

jQueryのcloneは、現在のselectedness(http://bugs.jquery.com/ticket/1294)を複製していないので、あなたはそれを手動で行う必要があるでしょう:

$('#form-to-submit').html($(fieldsetName).clone()); 
$('#form-to-submit select').val($('.fieldsetwrapper select').val()); 
+0

にあります。こんにちは、これは本当に興味深いものです。(例えば、 jQueryが選択された値を配置する場所を単独で見つけることができるかどうかはわかりませんでした。 フォームを選択するだけでなく、このフォームをフォーム全体で使用する方法はありますか? これについて話すリンクをご存知ですか?ありがとう – FLX

+1

彼らは直接の親が異なる場合、このソリューションは複数の選択メニューでは機能しませんでした。代わりに、私は選択の "各"をループし、元の対応する選択と ".eq"メソッドを対応させなければなりませんでした。誰かがスキミングするだけの簡単なメモ! :) –

+0

@Casey、私はあなたがコードの一部で精巧にしていた:あなたはまだ元の選択権のインデックスを取得する必要がありますか?あるいは、これを行う別の魔法の機能がありますか? :-) – Peter

3

あなたは古いものの値に新しいselect要素の値を設定することができるはずは:

$('#form-to-submit select').val($('.fieldsetwrapper select').val()); 
0

私の場合は、

$('<form></form>').html($('.myDiv').clone()) 

を使用して固定しましたマークアップに別のフォームを追加して発行する

$('.myForm').serialize() 
関連する問題