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 en mesure de modifier le code HTML pour ajouter un id
ou quelque chose d'autre.
C'est ce que j'ai essayé d'obtenir le form
élément par son nom:
var frm = $('form[name="frmSave"]');
console.log(frm);
(mais je crois que le code ci-dessus va essayer d'obtenir un des enfants de l'élément avec la frmSave
nom à l'intérieur de la form
qui n'est pas ce dont j'ai besoin).
Comment puis-je faire cela est-il possible d'obtenir le form
juste le name
et à l'aide d'un sélecteur?
Mise à jour:
Je faisais le mauvais sens dans mon code d'origine (j'ai été en utilisant un espace aka "combinator" dans le sélecteur) et pas dans l'extrait de code à partir d'ici, donc jQuery a été d'essayer d'obtenir tous les enfants de l'élément avec le nom nécessaire, et je me demandais ce qui était faux puisque rien n'a été renvoyé.
Accepté la réponse donne une meilleure explication à ce sujet, donc un peu d'espace pourrait tout changer - je vais dormir correctement la prochaine fois 🙂
- Votre code est correct.
- Êtes-vous sûr il n'y a pas d'autres erreurs JS sur la page de l'arrêt de cette exécution? Vérifiez les journaux de la console.
- Je suppose que c'était correct, mais pour quelque raison il imprime
null
à la console, c'est pourquoi j'ai demandé, peut-être autre chose qui pourrait être le problème, mais je vais vérifier de nouveau le tout.
Vous devez vous connecter pour publier un commentaire.
$('form[name="frmSave"]')
est correct. Vous avez mentionné que vous pensé que ce serait obtenir tous les enfants avec le nomfrmsave
à l'intérieur de la forme; cela ne se produit que si il y avait un espace ou d'autres combinator entre la forme et le sélecteur, par exemple:$('form [name="frmSave"]');
$('form[name="frmSave"]')
signifie littéralement trouver toutes les formes avec le nomfrmSave
, car il n'est pas combinator impliqués.$('form')
et cela a fonctionnéVous n'avez pas de combinateur (espace,
>
,+
...), donc pas les enfants de s'impliquer, jamais.Toutefois, vous pouvez éviter la nécessité pour jQuery en utilisant un
ID
etgetElementById
, ou vous pouvez utiliser la vieillegetElementsByName("frmSave")[0]
ou les personnes encore plus âgéesdocument.forms['frmSave']
. jQuery est inutile ici.getElementsByName
. Nice.document.querySelector("form[name='frmSave']")
serait trop de travail, mais uniquement dans les navigateurs les plus récents.Pour détecter si le formulaire est présent, je suis en utilisant