我正在尝试访问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对象......
答案 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?