2010-07-19 28 views
6

Co to jest jquery odpowiednik: document.forms[0].elements[i].value;?Co to jest jQuery odpowiednik document.forms [0] .elements [i] .value ;?

Nie wiem, jak przejść przez formularz i jego elementy w jQuery i chciałbym wiedzieć, jak to zrobić.

+1

Czy możesz podać przykład swojego znacznika i jakie wartości chcesz wyciągnąć? –

+0

Przeczytaj, jak wybrać rzeczy tutaj: http://api.jquery.com/category/selectors/ oraz o tym, jak przejść tutaj: http://api.jquery.com/category/traversing/. – karim79

+0

Napisałem skrypt sprawdzania poprawności formularza podstawowego w javascript i próbuję przenieść go do JQUERY. Jest to pętla for, która przeszukuje wszystkie elementy w sprawdzaniu od, aby upewnić się, że wszystkie wartości zmieniły się z domyślnego (tj. Imię imię) na coś rzeczywistego. Opublikowany przeze mnie fragment kodu jest dołączony do zmiennej, która zapisuje bieżącą wartość wejściową i sprawdza ją na liście wartości domyślnych. thisVal = document.forms [0] .elements [i] .value; – Ian

Odpowiedz

13

Tłumaczenie zwykle jest selektor :input:

$("form:first :input").each(function() { 
    alert($(this).val()); //alerts the value 
}); 

:first dlatego Twój przykład ciągnie pierwszy <form>, jeśli istnieje tylko jeden lub chcesz wszystkie elementy wejściowe, po prostu wyłącz :first. Model :input selector działa dla wszystkich elementów, których zazwyczaj się tutaj interesujesz.

Jeśli jednak wiemy dokładnie, jaki jest Twój cel, prawdopodobnie istnieje bardzo prosty sposób, aby to osiągnąć. Jeśli możesz opublikować więcej informacji, takich jak HTML i jakie wartości chcesz wyodrębnić (lub zrobić coś innego z).

+0

+1 Bardzo zadbane. :) –

+0

Dzięki za odpowiedź. Napisałem skrypt sprawdzania poprawności formularza podstawowego w javascript i próbuję przenieść go do JQUERY. Jest to pętla for, która przeszukuje wszystkie elementy w formularzu sprawdzającym, aby upewnić się, że wszystkie wartości zmieniły się z domyślnego (tj. Imię imię) na coś rzeczywistego. Przesłany przeze mnie fragment kodu jest dołączony do zmiennej, która zapisuje wartość bieżącego wejścia i sprawdza ją na liście wartości domyślnych. thisVal = document.forms [0] .elements [i] .value; – Ian

+0

Też mam 2 formularze na mojej stronie. Moja aktualna działająca wersja ma

w celu zatwierdzenia tego konkretnego formularza dla thisVal = document.forms [formName] .elements [i] .value; – Ian

0

Nie jestem do końca pewien, co próbujesz osiągnąć, ale powinieneś być w stanie zrobić coś takiego:

$('form:first').children(':first').val(); 

To będzie uzyskać wartość pierwszego węzła potomnego w ciągu pierwszego <form> tag w DOM.

+2

To by nic nie zwróciło ... wybierasz znacznik '' :) –

+0

Dzięki @Nick, masz rację - poprawiłem swój fragment. –

+0

To nadal jest niepoprawne, nie moje zdanie ... ale nie sądzę, że twoje myślenie o selektorach poprawnie tutaj, to by zwróciło pierwszy element, przykładem jest "element [i]", który tłumaczy dość blisko: '$ ('form: first: input'). eq (i) .val();' –

0
$("#formid input").each(function(){ 
    alert($(this).attr("value")) 
}) 
+0

To po prostu chwyciłoby pola 'input', a nie' select' lub 'textarea'. –

1

Cóż, przetłumaczone dosłownie, byłoby:

$('form:first *:nth-child(i)').val() 

Ale jQuery ułatwia chwycić elementów przez inne sposoby, takie jak ID lub selektora CSS. Byłoby łatwiej zachować, jeśli zrobiłeś coś takiego:

$('form#id input.name').val() 
0

To da ci wszystkie elementy w formularzu. W tym elementy nieformalne:

$("#[form id]").find() 

Następnie możesz użyć każdej funkcji do przemierzania wszystkich dzieci. Można też użyć selektora wejściowego zwrócić tylko elementy formularza:

$("#[form id] :input") 
+0

Kontrole formularzy zwykle nie są dziećmi w postaci – Quentin

+0

@David Masz rację. Mają tendencję do zagnieżdżania się, choć nie zawsze. Chyba powinienem był użyć find zamiast tego lub po prostu wymienić typ kontrolek, które chcemy zwrócić. Będę co najmniej zmienić, by użyć zamiast tego find. – spinon