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:
$('#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.
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
});
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
});
Quelque chose comme ça...
$('#myForm').submit(function (e) {
e.preventDefault;
if (e.result == true) {
alert("This form was submitted!")
}
});