2013-02-19 12 views
14

Mam stronę z wieloma formularzami, a użytkownik zamierza wybrać coś na tej stronie. Kiedy użytkownik to robi, muszę umieścić ten element w innym miejscu, podobnie jak w przypadku koszyka na zakupy. Ale wydaje mi się, że nie mogę uzyskać więcej niż pierwszy formularz na stronie, aby rzeczywiście działać zgodnie z przeznaczeniem. próbowałem wielu rzeczy:Jak sprawdzić w jQuery, czy został przesłany jakikolwiek formularz?

  1. Daj wszystkich form tego samego identyfikatora, który tylko spowodowane pierwsza forma działać jak chciałem, dając mi dane tego formularza.
  2. Daj im ponownie ten sam identyfikator, tym razem dołączając unikalny identyfikator do identyfikatora, ale oczywiście mój jQuery $('#something') nie przechwyci go, ponieważ nie pasuje.

Zastanawiam się, jak to zrobić. Muszę tylko otrzymać dane z przesłanego formularza na stronie. I jak już wspomniano, mógłbym dać im jakiś prefiks, tak jak teraz, ale nie wiem, jak to dopasować.

Pomoc byłaby bardzo pomocna!

Niektóre kod na żądanie (tylko przykład, aby pokazać, co mam na myśli, oczywiście):

HTML:

<form id="something-0"><input type="hidden" value="0"><input type="submit"></form> 
<form id="something-1"><input type="hidden" value="1"><input type="submit"></form> 

JQuery:

$("#something-%").submit(function(e) { 
e.preventDefault(); 
$("#some-span").html(data); 
}); 

Chcę # coś -% akceptować wszystko, co przychodzi po "-", mam nadzieję, że rozumiesz.

+1

Proszę podać kod. – Wez

+1

Czy możemy uzyskać przykład skrzypiec? Kod – dibs

+0

byłby bardzo doceniany – PlantTheIdea

Odpowiedz

23

Jako ogólną odpowiedź, sklasyfikować grupę elementów, należy użyć atrybutu class, dając każdy element tej samej nazwy klasy. Następnie możesz wybrać elementy tej klasy. Element może mieć więcej niż jedną klasę.

$(".something"); 

Jeśli trzeba użyć identyfikatora, można użyć selektora atrybutu:

$("[id^='something']"); // all elements with an id beginning with 'something' 
$("[id$='something']"); // all elements with an id ending with 'something' 

Dla tej konkretnej kwestii, ponieważ chcesz działać w dowolnej formie w obrębie strony, najprostszym rozwiązaniem byłoby, aby użyj wybieraka element name:

$("form"); 

Niezależnie od selektora, można określić, który formularz został złożony przez odwołanie this w submit() h andler:

$("form").submit(function (e) { 
    e.preventDefault(); 
    var formId = this.id; // "this" is a reference to the submitted form 
}); 
+0

Świetnie, to działało PERFECTLY !! Dzięki! – Lozzano

6

Możesz przechwytywać wszystkie formularze za pomocą selektora "formularza", np.

$("form").submit(function() { 
    var theForm = $(this); 
    var formID = theForm.attr("id"); 
    // do something 
}); 
+0

Czy zapomniałeś cytatów? '$ (" formularz ")' – gilly3

+0

Pewnie tak! Whoops! – devrooms

Powiązane problemy