it-swarm.com.de

Wie kann ich mit jQuery überprüfen, ob ein Formular gesendet wurde?

Ich habe eine Seite mit vielen Formularen, und der Benutzer wird etwas auf dieser Seite auswählen. Wenn der Benutzer dies tut, muss ich dieses Element an einer anderen Stelle platzieren, ähnlich wie bei einem Einkaufswagen. Aber ich kann anscheinend nicht mehr als das erste Formular auf der Seite bekommen, um tatsächlich wie beabsichtigt zu funktionieren. Ich habe mehrere Dinge ausprobiert:

  1. Geben Sie allen Formularen dieselbe ID, wodurch das erste Formular nur die gewünschten Aktionen ausführte, und geben Sie mir die Daten dieses Formulars.
  2. Geben Sie allen dieselbe ID erneut, und hängen Sie diesmal eine eindeutige Kennung an die ID an, aber meine jQuery $('#something') fängt sie natürlich nicht ab, da sie nicht übereinstimmt.

Also denke ich darüber nach, wie ich vorgehen würde. Ich muss nur die Daten aus dem übermittelten Formular auf der Seite erhalten. Und wie gesagt, ich könnte ihnen alle ein Präfix geben, wie ich es jetzt habe, aber dann weiß ich nicht, wie ich es zusammenbringen soll.

Hilfe wäre sehr dankbar!

Code wie gewünscht (nur ein Beispiel, um zu zeigen, was ich meine, natürlich):

Der 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>

Die jQuery:

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

Ich möchte, dass das # something-% alles akzeptiert, was nach dem "-" steht. Ich hoffe, Sie verstehen.

23
Lozzano

Um eine Gruppe von Elementen zu klassifizieren, verwenden Sie im Allgemeinen das Attribut class, und geben Sie jedem Element denselben Klassennamen. Sie können dann Elemente nach dieser Klasse auswählen. Ein Element kann mehr als eine Klasse haben.

$(".something");

Wenn Sie id verwenden müssen, können Sie einen Attributselektor verwenden:

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

Da Sie für diese spezielle Frage auf jedes Formular innerhalb der Seite zugreifen möchten, ist die einfachste Wahl die Verwendung des Elementnamensselektors:

$("form");

Unabhängig von der Auswahl können Sie feststellen, welches Formular gesendet wurde, indem Sie im submit() -Handler auf this verweisen:

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

Sie können alle Formulare abrufen, indem Sie den Selektor 'form' verwenden, z.

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

Etwas wie das...

   $('#myForm').submit(function (e) {
     e.preventDefault;
     if (e.result == true) {
       alert("This form was submitted!")
     }
   });
0
Nilson Martins