在另一个对象中访问jQuery对象

时间:2013-05-08 11:50:48

标签: jquery ajaxform

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

因此,如果我通过console.log(form)进行测试,则可行。我得到一个jQuery对象,可以通过form[0].

访问表单

console.log向我显示,在[0]下有更多元素,即表单的输入。我可以通过form[0][0] or form[0][1]等方式访问它们。

但是如何一次性获取所有子对象?

我的情况是,我不知道输入的数量,所以我需要通过foreach之类的东西来访问元素的所有输入。但是使用form[0]我只是获取表单的DOM元素。

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

修改 这是我从console.log(表单)获得的:

[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-Element和form [0] .find(':input')给了我Uncaught TypeError:Object#没有方法'find'...

EDIT2 要明确:我想获得输入#AdrowAdtableId。我可以通过表单[0] [1]访问它。但我不知道我在表格中输入的长度。这是动态的。所以做一些像form [0] .each()这样的事情会很棒。但是form [0]给了我DOM元素而不是jQuery对象......

3 个答案:

答案 0 :(得分:1)

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

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

如果form已经是jQuery对象,则以下情况稍好一些:

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

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

答案 1 :(得分: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
    }
});

答案 2 :(得分:1)

您可以使用.each()

访问表单上的所有输入
$(form[0]).find(':input').each(function{){
    var myInputValue = $(this).val();
});

如果您需要了解具体的输入类型,请参阅:How to get input type using jquery?