Est-il redondant d'utiliser l'attribut «name» pour les champs de saisie dans le développement Web moderne?

StackOverflow https://stackoverflow.com/questions/1813085

  •  06-07-2019
  •  | 
  •  

Question

J'ai remarqué beaucoup de sites Web dont le ou les formulaires contiennent des champs de saisie dont le "nom". Cet attribut est spécifié même s'il n'est pas utilisé à des fins de style ou de script!

De plus, selon le document officiel à propos du formulaire dans un document HTML ...

  

name = cdata [CI] noms d'attribut   l'élément pour qu'il puisse être référé   à partir de feuilles de style ou de scripts. Remarque.   Cet attribut a été inclus pour   rétrocompatibilité. Applications   devrait utiliser l'attribut id pour   identifier les éléments.

Ma question est donc la suivante: cet attribut doit-il être utilisé uniquement à des fins de style et de script?

Merci d'avance!

EDIT: L'utilisation de cet attribut avec des champs de saisie de "texte" pourrait notamment être évitée. type (quand il n'y a pas de style ou de script)?

EDIT 2: Ainsi, vous avez presque confirmé ce que j'avais pensé: le "nom". Cet attribut sera obsolète dans d'autres spécifications / normes HTML !!! Il est encore "vivant" seul pour la compatibilité ascendante ... peut parfois être évité, mais il existe encore des cas (comme le bouton radio) où il est nécessaire!

Était-ce utile?

La solution

L'attribut name est la notation permettant de référencer des éléments spécifiques entrant dans le champ d'une page Web via Javascript non-DOM:

document.forms['your_form'].elements['aa']

L'attribut id de l'élément doit être défini avec la même valeur pour que les éléments suivants fonctionnent:

document.getElementById('aa')

D'après ce que j'ai compris, lorsque Netscape a créé Javascript, il a utilisé l'attribut name . La spécification HTML a cependant décidé d'utiliser id , mais a conservé nom pour assurer la compatibilité avec les versions antérieures. IME, utilisant l'attribut name était requis pour la prise en charge d'Internet Explorer 6 car le moteur JavaScript dans IE ne lisait pas l'attribut id - seul le nom bien que les deux aient été définis.

  

... pourrait être évité si vous utilisiez cet attribut avec des champs de saisie de "texte". type (quand il n'y a pas de style ou de script)?

Si les champs de texte ne sont associés à aucun javascript, oui, ils seraient inutiles.

Autres conseils

Je pense que vous constaterez que presque tous les sites auront des entrées avec l'attribut name. Je ne le vois pas disparaître de si tôt.

  

L'attribut name spécifie un nom   pour un élément d'entrée.

     

L'attribut name est utilisé pour identifier   données de formulaire après qu'il a été soumis   au serveur, ou au formulaire de référence   données utilisant JavaScript sur le client   côté.

     

Remarque: seuls les éléments de formulaire portant un nom.   attribut aura leurs valeurs   passé lors de la soumission d'un formulaire.

source

Il existe des différences entre les attributs id et name. Un identifiant est applicable à n'importe quel élément du document HTML, tandis qu'un nom n'est pertinent que pour les champs de saisie. Un identifiant est requis par la norme pour être unique dans une page (mais pas nécessairement suivi dans toutes les pages Web). Cependant, différents éléments peuvent avoir le même nom. Un cas particulier vient à l’esprit: le bouton radio. Tous les boutons radio doivent avoir le même nom et la valeur de celle sélectionnée sera restituée au formulaire. Vous voyez donc que ce nom a toujours une signification dans le traitement des formulaires HTML.

J'ai vu des systèmes de génération automatique de formulaires HTML (tels que zope.formlib ), ce qui Les attributs id et name sont tous deux générés automatiquement pour différents types de widgets d'entrée. Ces systèmes de génération automatique de formulaires prennent en charge toutes les nuances associées aux différences d'attributs id et name. Ils font aussi des choses comme générer un élément d’entrée caché pour chaque élément de case à cocher. Donc, chaque fois que cela est possible, j'essaie d'utiliser un mécanisme de génération automatique de formulaire HTML et de le laisser prendre en charge les problèmes en jeu.

C'est une vieille question, mais il convient de noter que de nombreux frameworks JS modernes reposent sur l'attribut name . En particulier, la fonction sérialiser de jQuery:

  

Pour que la valeur d'un élément de formulaire soit incluse dans la chaîne sérialisée, l'élément doit avoir un attribut name.

Le nom semble faire son retour.

Il convient également de noter que l'attribut name est utile car il a légèrement plus de "& scope; scope " que id . id doit être unique dans une page, mais le même nom peut être utilisé plusieurs fois. Cela le rend utile lorsque vous avez plusieurs formulaires sur la même page, ou lorsque vous souhaitez référencer un groupe de cases à cocher, etc.

Les anciens navigateurs IIRC utilisent le nom à la place de l'ID, c'est pourquoi il est normalement inclus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top