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 回答