Mam stronę internetową z 3 formularzami. Nie zagnieżdżone, tylko jedna po drugiej (są prawie identyczne, tylko jedna ukryta zmienna jest inna). Użytkownik wypełni tylko jeden formularz i chciałbym / etc zweryfikować wszystkie formularze za pomocą tylko jednego skryptu JS.
Jak więc, gdy użytkownik kliknie przycisk przesyłania formularza nr 1, mam sprawić, by mój skrypt js obsługiwał tylko pola w formularzu form1? Rozumiem, że ma to coś wspólnego z rodzicami $ (this)., Ale nie jestem pewien, co z tym zrobić.
Mój skrypt walidacyjny (którego użyłem gdzie indziej, tylko z jednym formularzem) wygląda mniej więcej tak:
$(document).ready(function(){
$("#submit").click(function(){
$(".error").hide();
var hasError = false;
var nameVal = $("#name").val();
if(nameVal == '') {
$("#name").after('Please enter your name.');
hasError = true;
}
if(hasError == false) {blah blah do all the processing stuff}
Czy muszę więc zamienić takie rzeczy, jak $ ("# nazwa"). Val () na $ (this) .parents ('form'). Name.val ()? A może jest lepszy sposób na zrobienie tego?
Dzięki!
var form = $(this).form
tak, jak w normalnym JavaScript:function onClick(button) { var form = button.form; }
???Tę odpowiedź znalazłem, szukając sposobu znalezienia formy elementu wejściowego. Chciałem dodać notatkę, ponieważ jest teraz lepszy sposób niż użycie:
Nie jestem pewien, kiedy został dodany do jQuery, ale metoda near () robi dokładnie to, co jest potrzebne, w bardziej przejrzysty sposób niż użycie parent (). Z najbliższym kod można zmienić na ten:
Przechodzi w górę i znajduje pierwszy element, który pasuje do tego, czego szukasz, i zatrzymuje się w tym miejscu, więc nie ma potrzeby określania: pierwszy.
źródło
Aby otrzymać formularz, który przesyłasz jest w środku, dlaczego nie tylko
Najłatwiejsza i najszybsza droga do wyniku.
źródło
Użyłem następującej metody i działało dobrze dla mnie
$('#mybutton').closest("form")
załatwił sprawę dla mnie.źródło
Eileen: Nie, nie jest
var nameVal = form.inputname.val();
. Powinien być albo ...w jQuery:
Lub w JavaScript:
Lub kombinacja:
Dzięki jQuery możesz nawet przechodzić przez wszystkie wejścia w postaci:
źródło