2009-11-28 5 views
5

Ho notato molti siti Web con moduli che contengono campi di input il cui attributo "nome" è specificato anche se non viene utilizzato per lo stile o lo scopo di script!È ridondante utilizzare l'attributo "nome" per i campi di input nel moderno sviluppo web?

Inoltre, secondo the official document circa la forma di documento HTML ...

name = CDATA [CI] nomi Questo attributo l'elemento in modo che possa essere riferito a da fogli di stile o script. Nota. Questo attributo è stato incluso per la compatibilità con le versioni precedenti di . Le applicazioni devono utilizzare l'attributo id per identificare gli elementi .

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

Grazie in anticipo!


EDIT: In particolare, potrebbero essere evitati l'uso di questo attributo con campi di input di tipo "testo" (quando non ci sono scopi styling o script)?


EDIT 2: Quindi, lei ha quasi confermato quello che avevo pensato: l'attributo "nome" sarà deprecato in ulteriori specifiche HTML/standard !!! ??? È ancora "vivo" solo for backwards compatibility ... in alcuni casi può essere evitato ma ci sono ancora alcuni casi (come il pulsante radio) dove è necessario!

+3

La citazione è per l'elemento FORM, non per gli elementi di input. Dovrai comunque dare un nome agli elementi di input affinché il tuo codice lato server possa leggere correttamente le informazioni inviate. –

+0

Mi dispiace che tu abbia ragione! Riguardo al processo di invio sono d'accordo, ma la mia domanda è più generale, infatti come sottolineato dalle risposte sottostanti, ci sono casi in cui questo attributo non è necessario! Comunque grazie! – BitDrink

risposta

3

L'attributo name è la notazione di riferimento elementi specifici nell'ambito di una pagina web attraverso la non-DOM JavaScript:

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

L'attributo id per l'elemento deve essere impostato con lo stesso valore per la seguente al lavoro:

document.getElementById('aa') 

mia comprensione è che quando Netscape ha creato Javascript, ha usato l'attributo name. La specifica HTML tuttavia ha deciso di andare con id, ma mantenuto name per compatibilità con le versioni precedenti. IME, utilizzando l'attributo name, era necessario per il supporto di Internet Explorer 6 perché il motore javascript in IE non leggeva l'attributo id, ma solo lo name era definito.

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

Se non si dispone di javascript collegati ai campi di testo, sì, non sarebbero necessari.

+0

Grazie! Quindi hai confermato quello che avevo pensato: l'attributo "nome" in futuro sarà probabilmente deprecato !!! ??? – BitDrink

+1

@BitDrink: Una volta che ci liberiamo di Internet Explorer 6, la deprecazione dovrebbe essere la realtà. –

+0

MrGreen Sì, hai perfettamente ragione !!! – BitDrink

0

I browser più vecchi di IIRC utilizzano il nome al posto dell'ID, è per questo che è normalmente incluso.

+0

Grazie per la tua risposta! – BitDrink

2

Esistono differenze tra gli attributi ID e nome. Un id è applicabile a qualsiasi elemento nel documento HTML mentre un nome è rilevante solo per i campi di input. Uno standard è richiesto dallo standard per essere unico in una pagina (sebbene non necessariamente seguito in tutte le pagine web). Diversi elementi possono avere lo stesso nome però. Un caso particolare viene in mente è il pulsante radio. Tutti i pulsanti di opzione dovrebbero avere lo stesso nome e il valore di quello selezionato verrà restituito al modulo. Quindi puoi vedere che il nome ha ancora un significato nell'elaborazione dei moduli HTML.

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

+0

Grazie, il pulsante radio è un buon esempio! Tuttavia, non sono d'accordo con la generazione automatica del codice di markup! – BitDrink

+0

@BitDrink Beh, non sono d'accordo con la generazione dell'HTML quando è qualcosa di piccolo come un modulo, ma molti siti Web usano lo scripting lato server per generare grandi quantità di HTML che non potrebbero essere fatte a mano, come i motori di ricerca. Ci sono anche cose come [Google Web Toolkit] (https://developers.google.com/web-toolkit/), che arriva al punto di generare automaticamente javascript da java. –

5

Penso che troverete quasi tutti i siti con input con l'attributo name. Non vedo che vada via in qualunque momento presto.

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

L'attributo name viene utilizzato per identificare dati del modulo dopo che è stata presentata al server, o fare riferimento a forma dati utilizzando JavaScript sul lato client.

Nota: Solo gli elementi di forma con un attributo nome avranno i loro valori passati durante l'invio di un modulo.

source

+0

Hai sottolineato un buon punto! Tuttavia, la mia domanda viene fuori dopo aver visto alcuni campi di input che contengono questo attributo (e alcuni altri) dove non è necessario ... quindi penso che questa sia una cattiva pratica in via di sviluppo, una questione di ridondanza! – BitDrink

+0

Dipende, se l'input è in un modulo e non vuoi/devi inviare i dati, non usare l'attributo name. Se l'input è esterno a un modulo, non ne hai affatto bisogno. Se sarà deprecato? Ne dubito davvero, ma è già un attributo opzionale, quindi è necessario utilizzarlo solo se si desidera (o se si desidera passare dati al server). – mlouro

1

Questa è una vecchia questione, ma vale la pena notare che molti framework JS moderne si basano su l'attributo name. In particolare, la funzione serialize jQuery:

Per valore di un elemento del modulo da inserire nella stringa serializzata, l'elemento deve avere un attributo nome.

Semmai, name sembra essere un ritorno.

Vale anche la pena notare che l'attributo name è utile perché ha leggermente più "scope" di id. id deve essere univoco all'interno di una pagina, ma lo stesso name può essere utilizzato più volte. Ciò lo rende utile quando si hanno più moduli sulla stessa pagina o quando si desidera fare riferimento a un gruppo di checkbox, ecc.

Problemi correlati