0

我正在尝试在 ajaxForm 的成功回调中访问表单元素。表单元素作为第 4 个元素传递(参见: http: //malsup.com/jquery/form/#options-object -> 成功)。

因此,如果我通过 测试它console.log(form),它可以工作。我得到一个 jQuery 对象,可以通过以下方式访问表单form[0].

但是这些console.log告诉我,[0]在表单的输入下还有更多的元素。我可以通过form[0][0] or form[0][1]等等来访问它们。

但是我怎样才能一次得到所有的子对象呢?

我的情况是,我不知道输入的数量,所以我需要通过类似foreach. 但是form[0]我只是得到了表单的 DOM-Element。

这有点复杂,但我希望你能理解我的问题。

编辑: 这是我从 console.log(form) 得到的:

[form#doku_newrowJsonForm.doku_newrowJsonForm, context: form#doku_newrowJsonForm.doku_newrowJsonForm, jquery: "1.9.1", constructor: function, init: function, selector: ""…]
0: form#doku_newrowJsonForm.doku_newrowJsonForm
 0: input
 1: input#AdrowAdtableId
 2: input#AdrowCustomerId
 3: input#AdrowContent19.input-small
 4: input#AdrowContent20.input-small
 5: input#AdrowContent21.input-small
 6: input#AdrowContent22.input-small
 7: input#AdrowContent23.input-small
 8: input#AdrowContent24.input-small

form[0] 只是给了我 DOM 元素,而 form[0].find(':input') 给了我 Uncaught TypeError: Object # has no method 'find' ...

Edit2 要明确:我想获取例如 input#AdrowAdtableId。我可以通过表单[0][1] 访问它。但我不知道表格中输入的长度。它是动态的。因此,做类似 form[0].each() 之类的事情会很棒。但是 form[0] 给了我 DOM 元素而不是 jQuery 对象...

4

3 回答 3

1

只需使用find(). 如果您希望表单中的所有输入(并且表单本身可以作为 访问form[0]),只需执行以下操作:

$(form[0]).find(":input")

如果form已经是 jQuery 对象,则以下内容会稍微好一些:

form.eq(0).find(":input")

请注意,我使用:input伪类来获取所有类似输入的元素,而不仅仅是<input>一个。

于 2013-05-08T11:53:46.623 回答
1

如果您使用的是 jQuery 表单并且您对发布的值感兴趣,您可以执行以下操作:

var form = $('form');
form.ajaxForm({
    beforeSubmit: function(arr, $form, options) {
        form.data('form-values', arr);
    },
    success: function() {
        console.log(form.data('form-values')); // logs the submitted values
    }
});
于 2013-05-08T11:59:26.763 回答
1

您可以使用.each()

$(form[0]).find(':input').each(function{){
    var myInputValue = $(this).val();
});

如果您需要知道输入的具体类型,请参阅:如何使用 jquery 获取输入类型?

于 2013-05-08T12:02:32.883 回答