/ / Acessando um objeto jQuery em outro objeto - jquery, ajaxform

Acessando um objeto jQuery em outro objeto - jquery, ajaxform

Estou tentando acessar um elemento de formulário no callback de sucesso do ajaxForm. O elemento form é passado como quarto elemento (veja: http://malsup.com/jquery/form/#options-object -> sucesso).

Então, se eu testá-lo via console.log(form), funciona. Eu obtenho um objeto jQuery e posso acessar o formulário via form[0].

Mas o console.log me mostra, que sob [0] existem mais elementos, as entradas do formulário. Posso acessá-los via form[0][0] or form[0][1] e assim por diante.

Mas como posso obter todos os objetos filhos de uma só vez?

Minha situação é que eu não sei a quantidade de entradas, então eu preciso acessar todas as entradas do elemento através de algo como um foreach. Mas com form[0] Acabei de receber o elemento DOM do formulário.

É um pouco complexo, mas espero que você entenda o meu problema.

Editar: Isto é o que eu recebo do 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] apenas me dá o elemento DOM e a forma [0] .find (": input") me dá um TypeError não capturado: O objeto # não possui nenhum método "find" ...

Edit2 Para ser claro: Eu quero obter, por exemplo, entrada # AdrowAdtableId. Eu posso acessar isso através do formulário [0] [1]. Mas eu não sei o tamanho das entradas que tenho no formulário. É dinamicamente. Então seria ótimo fazer algo como form [0] .each (). Mas form [0] me dá o elemento DOM e não o objeto jQuery ...

Respostas:

1 para resposta № 1

Apenas use find(). Se você quiser todas as entradas dentro do formulário (e o próprio formulário pode ser acessado como form[0]) apenas faça:

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

E se form se já for um objeto jQuery, o seguinte é um pouco melhor:

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

Note que eu usei o :input pseudo-classe para obter todos os elementos de entrada, não apenas <input> uns.


1 para resposta № 2

Se você estiver usando o formulário jQuery e estiver interessado nos valores postados, poderá fazer o seguinte:

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 para resposta № 3

Você pode acessar todas as entradas em um formulário com o .each()

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

Se você precisa saber o tipo específico de entrada, veja isto: Como obter o tipo de entrada usando jquery?