2013-05-08 2 views
0

Я пытаюсь получить доступ к элементу формы в обратном вызове ajaxForm. Элемент формы передается как 4-й элемент (см.: http://malsup.com/jquery/form/#options-object -> успех).Доступ к объекту jQuery в другом объекте

Так что если я тестирую его через console.log(form), он работает. Я получаю объект jQuery и могу получить доступ к форме через form[0].

Но console.log показывает мне, что под [0] есть еще элементы, входные данные формы. Я могу получить к ним доступ через form[0][0] or form[0][1] и так далее.

Но как я могу получить все дочерние объекты одновременно?

Моя ситуация в том, что я не знаю количество входов, поэтому мне нужно получить доступ ко всем входам элемента через что-то вроде foreach. Но с form[0] Я просто получаю DOM-элемент формы.

Это немного сложный вопрос, но я надеюсь, что вы понимаете мою проблему.

Edit: Это то, что я получаю от 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 

вид [0] просто дает мне DOM-элемент и форма [0] .find (': вход ') дает мне неперехваченный TypeError: Объект # не имеет метода „найти“ ...

Edit2 чтобы быть ясны: я хочу, чтобы получить, например, ввод # AdrowAdtableId. Я могу получить доступ к этому через форму [0] [1]. Но я не знаю длины входных данных, которые у меня есть в форме. Это динамично. Поэтому было бы здорово сделать что-то вроде формы [0] .each(). Но форма [0] дает мне элемент DOM, а не объект jQuery ...

+0

иметь четкие представление о question..Elaborate это .. –

+0

Пожалуйста, пост точных м arkup формы (по крайней мере, начало ее, включая один или два входа), видя, что ваш вопрос немного запутан на этом этапе. –

ответ

1

Просто используйте find(). Если вы хотите, чтобы все входы внутри формы (и форма сама по себе может быть доступ, как form[0]) вобще:

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

Если form если уже JQuery объект следующий немного лучше:

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

Примечание что я использовал псевдокласс класса :input, чтобы получить все элементы, похожие на ввод, а не только <input>.

+0

Это, кажется, хорошее решение, но оно не работает. Объяснение ниже. –

+0

Что значит «не работает». Что оно делает? – fog

+0

Я только что редактировал свой первый пост. Извините за задержку ... Я получаю Uncaught TypeError –

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 
    } 
}); 
1

Вы можете получить доступ все входы в форме с .each()

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

Если вам нужно знать конкретный тип ввода увидеть это: How to get input type using jquery?

+0

К сожалению $ (form [ 0]). Find ... не работает. $ (Form [0]) возвращает точно так же, как 'form'. –

Смежные вопросы