web-dev-qa-db-fra.com

Sélecteur jQuery pour obtenir le formulaire par nom

J'ai le code HTML suivant:

<form name="frmSave">...</form>

Juste pour savoir, je suis pas capable de modifier le code HTML afin d’ajouter un id ou autre chose.

C’est ce que j’ai essayé d’obtenir l’élément form par son nom:

var frm = $('form[name="frmSave"]');

console.log(frm);

(mais je crois que le code ci-dessus essaiera d'obtenir un élément enfants avec le nom frmSave à l'intérieur du form, ce qui n'est pas ce dont j'ai besoin).

Comment puis-je y parvenir, est-il possible d'obtenir le form uniquement par le name et en utilisant un sélecteur?


Mise à jour:

Je me trompais dans mon code d'origine (j'utilisais un espace appelé "combinator" dans le sélecteur) et non dans l'extrait de code d'ici, donc jQuery essayait d'obtenir n'importe quel élément children avec le nom souhaité et je me demandais ce qui n'allait pas puisque rien n'a été rendu.

La réponse acceptée donne une meilleure explication à ce sujet, donc un peu d’espace pourrait tout changer - je dormirai correctement la prochaine fois :-)

41
Oscar

$('form[name="frmSave"]') est correct. Vous avez indiqué que vous pensiez que tous les enfants portant le nom frmsave figureraient dans le formulaire. cela ne se produirait que s'il y avait un espace ou un autre combinateur entre la forme et le sélecteur, par exemple: $('form [name="frmSave"]');

$('form[name="frmSave"]') signifie littéralement recherchez toutes les formes portant le nom frmSave, car aucun combinateur n'est impliqué.

73
Christian Varga
    // this will give all the forms on the page.

    $('form')

   // If you know the name of form then.

    $('form[name="myFormName"]')

  //  If you don't know know the name but the position (starts with 0)

    $('form:eq(1)')  // 2nd form will be fetched.
9
Arun Pratap Singh

Vous n'avez pas de combinateur (espace, >, + ...) afin qu'aucun enfant ne s'implique jamais.

Cependant, vous pouvez éviter le recours à jQuery en utilisant ID et getElementById, ou vous pouvez utiliser l'ancien getElementsByName("frmSave")[0] ou même l'ancien document.forms['frmSave']. jQuery est inutile ici.

6

Pour détecter si le formulaire est présent, j'utilise

if($('form[name="frmSave"]').length > 0) {
    //do something
}
2
Mike Irving