È ridondante usare il nome & # 8220; & # 8221; attributo per i campi di input nello sviluppo web moderno?

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

  •  06-07-2019
  •  | 
  •  

Domanda

Ho notato molti siti Web con moduli che contengono campi di input il cui "nome" è L'attributo è specificato anche se non viene utilizzato per scopi di stile o di scripting!

Inoltre, secondo il documento ufficiale sul modulo nel documento HTML ...

  

name = cdata [CI] Nomi di questo attributo   l'elemento in modo che possa essere riferito   da fogli di stile o script. Nota.   Questo attributo è stato incluso per   compatibilità con le versioni precedenti. applicazioni   dovrebbe usare l'attributo id per   identificare gli elementi.

Quindi, la mia domanda è: questo attributo dovrebbe essere usato solo per scopi di stile e scripting?

Grazie in anticipo!


MODIFICA: In particolare, potrebbe essere evitato l'uso di questo attributo con campi di input di " testo " tipo (quando non ci sono scopi di stile o di scripting)?


MODIFICA 2: Quindi, hai quasi confermato ciò a cui avevo pensato: il nome " " l'attributo sarà deprecato in ulteriori specifiche / standard HTML !!! ??? È ancora " vivo " solo per retrocompatibilità ... in alcuni casi può essere evitato ma ci sono ancora alcuni casi (come il pulsante di opzione) in cui è necessario!

È stato utile?

Soluzione

L'attributo name è la notazione per fare riferimento a elementi specifici nell'ambito di una pagina Web tramite Javascript non DOM:

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

L'attributo id per l'elemento deve essere impostato con lo stesso valore affinché funzioni quanto segue:

document.getElementById('aa')

La mia comprensione è che quando Netscape ha creato Javascript, ha usato l'attributo name . Le specifiche HTML hanno tuttavia deciso di utilizzare id , ma hanno mantenuto name per compatibilità con le versioni precedenti. IME, utilizzando l'attributo name era richiesto per il supporto di Internet Explorer 6 perché il motore javascript in IE non leggeva l'attributo id - solo il name sebbene entrambi siano stati definiti.

  

... potrebbe essere evitato l'uso di questo attributo con campi di input di "testo" tipo (quando non ci sono scopi di stile o di scripting)?

Se non hai javascript attaccato ai campi di testo, sì - sarebbero inutili.

Altri suggerimenti

Penso che troverai che quasi tutti i siti avranno input con l'attributo name. Non lo vedo scomparire presto.

  

L'attributo name specifica un nome   per un elemento di input.

     

L'attributo name viene usato per identificare   modulo dati dopo che è stato inviato   al server o al modulo di riferimento   dati che utilizzano JavaScript sul client   lato.

     

Nota: solo gli elementi del modulo con un nome   l'attributo avrà i suoi valori   passato durante l'invio di un modulo.

source

Esistono differenze tra gli attributi id e name. Un ID è applicabile a qualsiasi elemento nel documento HTML mentre un nome è rilevante solo per i campi di input. Per impostazione predefinita, un ID è univoco in una pagina (sebbene non sia necessariamente seguito in tutte le pagine Web). Tuttavia, elementi diversi possono avere lo stesso nome. Un caso particolare viene in mente è il pulsante di opzione. Tutti i pulsanti di opzione devono avere lo stesso nome e il valore di quello selezionato verrebbe restituito al modulo. Quindi puoi vedere che quel nome ha ancora un significato nell'elaborazione del modulo HTML.

Ho visto nei sistemi automatici di generazione di moduli HTML (come zope.formlib ), che entrambi gli attributi id e name vengono generati automaticamente per diversi tipi di widget di input. Tali sistemi di generazione automatica dei moduli si prendono cura di tutte le sfumature associate alle differenze negli attributi id e name. Fanno anche cose come la generazione di un elemento di input nascosto per ogni elemento della casella di controllo. Quindi, laddove possibile, provo a utilizzare una sorta di meccanismo automatico di generazione di moduli HTML e lascia che si occupi dei problemi coinvolti.

Questa è una vecchia domanda, ma vale la pena notare che molti moderni framework JS si basano sull'attributo name . In particolare, la funzione serializza di jQuery:

  

Affinché il valore di un elemento del form sia incluso nella stringa serializzata, l'elemento deve avere un attributo name.

Semmai, name sembra tornare.

Vale anche la pena notare che l'attributo name è utile perché ha un po 'più di " scope " di id . id deve essere univoco all'interno di una pagina, ma lo stesso nome può essere utilizzato più volte. Questo è utile quando hai più moduli nella stessa pagina o quando vuoi fare riferimento a un gruppo di caselle di controllo, ecc.

I browser IIRC più vecchi usano il nome al posto dell'ID, ecco perché è normalmente incluso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top