4

こんにちは、ページ内のすべてのフォームを選択してから、入力値をシリアル化しようとしています。次のコードを使用しています。

function serializeAllFormData() {
                        var serializedData;
                        $("#form").each(
                                function() {
                                    serializedData = serializedData
                                            + $(this).serialize();
                                });
                        return serializedData;
                    }

しかし、serializedData を調べると未定義です。何が間違っているのでしょうか?

4

2 に答える 2

11

ID であるかのようにフォームを選択しています#form(ハッシュ記号#は ID を選択する場合にのみ使用されます)。form代わりに使用してみてください。

$("form").each(function() {
   serializedData = serializedData + $(this).serialize();
});

アップデート

ドキュメントによると、各関数は最初の引数 (indexInArray) を取ることができます。したがって、次のようなことができます。

var forms = $("form");
forms.each(function(i) {
   serializedData = serializedData + $(this).serialize();

   // i will start a 0, therefor forms.length - 1 in the if-statement
   if (i === forms.length - 1) {
      // Do something on the last element
   }
});

ループが実行されるたびに DOM を通過する必要がないように、フォームを変数にキャッシュします。

于 2012-07-17T15:18:41.070 に答える
0

によって修正されました

function serializeAllFormData() {
                        var serializedData;
                        var forms = $('#content').find('form');
                        $(forms).each(
                                function() {
                                    serializedData = serializedData
                                            + $(this).serialize();
                                });
                        alert(serializedData);
                        return serializedData;
                    }
于 2012-07-17T15:19:41.653 に答える