2

フォームがすでにシリアル化されている場合、フォームに入力する簡単な方法があるかどうか疑問に思っていますか?たとえば、持っている場合var form = $('#myform').serialize()、そのデータをフォームにどのようにロードする必要がありますか?利用可能なjquery関数はありますか、それともフォームのすべての値を手動で設定する必要がありますか?

フォームの例:

<form id="myform">
    <input type="text" name="first_name"/>
    <input type="text" name="last_name"/>
    <select name="gender">
        <option val=""></option>
        <option val="male">Male</option>
        <option val="female">Female</option>
    </select>
</form>

そのため、同じ空白のフォームにシリアル化されたデータをすばやく簡単に再入力する方法を探しています。

4

2 に答える 2

3

@Johanの答えは非常に良いですが、これまでのところ、私にとって最良の解決策はformParamsでした。フォームをでjsonオブジェクトに変換し、$('#myform').serializeArray()ajaxを介してスクリプトに投稿し、データベースに保存しました。フォームを再入力する必要があるときは、ajaxリクエストを使用してjsonに保存されたフォームデータをフェッチし、それをで使用しました$('#myForm').formParams()

なぜjqueryはそのような関数をフレームワークに実装しなかったのだろうか...

于 2013-01-23T00:06:26.587 に答える
1

以下のスニペットを使用しますが、各要素のnameプロパティの代わりにid/classを使用するように変更します。

$.fn.serializeObject = function()
{
   var o = {};
   var a = this.serializeArray();
   $.each(a, function() {
       if (o[this.name]) {
           if (!o[this.name].push) {
               o[this.name] = [o[this.name]];
           }
           o[this.name].push(this.value || '');
       } else {
       o[this.name] = this.value || '';
       }
    });
   return o;
};

フォームデータがキーと値のペアである場合は、オブジェクト配列を反復処理して値をマップするだけです。いくつかの疑似コード:

$.each(arr, function(k, v){
    $('#newform .' + key).val(v);
});
于 2013-01-18T20:16:44.793 に答える