1

jquery を使用して div セクションをシリアル化したい.serialize()。この関数でのみフォームをシリアル化できることを知っています。したがって、このために、div セクションのクローンを作成し、新しく作成したフォーム要素に追加して、シリアル化します。他の入力フィールドはシリアル化されていますが、選択リストの値はシリアル化されていません (選択された値はシリアル化された文字列にありません)。JSFIDDLE を作成しました:

http://jsfiddle.net/mj6Eg/1/

HTML

<div id="serializethis">
<label>Quantity</label>
<select id="quantity" name="Quantity" size="1">
  <option value="1">1</option>
  <option value="5">5</option>
  <option value="25">25</option>
  <option value="50">50</option>
</select>
</div>

<button id="serialize">Serialize</button>​

JS

$("#serialize").click(function(){

    var clone = $("#serializethis").clone();
    var form = $("<form />").append(clone);

    alert(form.serialize());

});​

私は何が欠けていますか?

4

1 に答える 1

8

clone()要素を -ing すると、選択した値が失われます。したがって、コードは機能しません。最も簡単な解決策は、常に<form>要素を保持することです (とにかく必要な HTML5 を使用しない限り)。

別の解決策は、要素を一時的にフォームにラップすることです。

$("#serialize").click(function() {
    var data = $("#serializethis").wrap('<form>').parent().serialize();
    alert(data);
    $("#serializethis").unwrap('form');
});
于 2012-12-22T11:46:48.863 に答える