web-dev-qa-db-fra.com

Comment vérifier avec jQuery si un formulaire est soumis?

J'ai une page avec beaucoup de formulaires, et l'utilisateur va choisir quelque chose sur cette page. Lorsque l'utilisateur le fait, je dois placer cet élément ailleurs, un peu comme un panier vraiment. Mais je n'arrive pas à obtenir plus que le premier formulaire de la page pour fonctionner comme prévu. J'ai essayé plusieurs choses:

  1. Donnez à tous les formulaires le même identifiant, ce qui n'a fait que le premier formulaire agir comme je le souhaitais, en me donnant les données de ce formulaire.
  2. Donnez-leur à nouveau le même ID, cette fois en ajoutant un identifiant unique à l'ID, mais bien sûr, ma jQuery $('#something') ne l'attrape pas car elle ne correspond pas.

Je réfléchis donc à la façon dont j'allais procéder. Je dois seulement recevoir les données du formulaire soumis sur la page. Et comme mentionné, je pourrais leur donner à tous un préfixe, comme je l'ai maintenant, mais je ne sais pas comment le faire correspondre.

L'aide serait grandement appréciée!

Du code comme demandé (seulement un exemple pour montrer ce que je veux dire, bien sûr):

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

La jQuery:

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

Je veux que le # quelque chose-% accepte tout ce qui vient après le "-", j'espère que vous comprenez.

23
Lozzano

En règle générale, pour classer un groupe d'éléments, utilisez l'attribut class, en donnant à chaque élément le même nom de classe. Vous pouvez ensuite sélectionner des éléments par cette classe. Un élément peut avoir plusieurs classes.

$(".something");

Si vous devez utiliser id, vous pouvez utiliser un sélecteur d'attribut:

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

Pour cette question spécifique, puisque vous souhaitez agir sur n'importe quel formulaire de la page, le choix le plus simple serait d'utiliser le sélecteur de nom d'élément:

$("form");

Quel que soit le sélecteur, vous pouvez identifier le formulaire soumis en référençant this dans le gestionnaire submit():

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

Vous pouvez attraper tous les formulaires en utilisant le sélecteur 'formulaire', par ex.

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

Quelque chose comme ça...

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