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?
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 :-)
$('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é.
// 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.
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.
Pour détecter si le formulaire est présent, j'utilise
if($('form[name="frmSave"]').length > 0) {
//do something
}