2012-01-20 9 views
41

Qual è il punto dell'attributo name in un modulo HTML? Per quanto posso dire, non è possibile leggere il nome del modulo al momento dell'invio o fare altro con esso. Serve a uno scopo?Qual è il punto dell'attributo `name` di moduli HTML?

+3

ho messo un po 'a capire che si sta solo chiedendo circa l'attributo 'name' su un tag' '

, non' name' attributi su '' tag all'interno di un '' – mmcrae

risposta

43

In breve, e probabilmente banalizzando un po ': Viene utilizzato al posto di id per i browser che non comprendono document.getElementById.

In questi giorni non serve a nessuno scopo. È un'eredità fin dai primi giorni delle guerre dei browser prima dell'uso di name per descrivere come inviare i valori di controllo quando viene inviato un modulo e id per identificare un elemento all'interno della pagina è stato risolto.

+3

Sì, una vera risposta. Grazie. Non sapevo che i browser non capivano 'document.getElementById' ... Suppongo che possiamo saltare quelli, eh? –

+0

Avevo il sospetto tanto di – Yarin

+2

Ha ancora uno scopo: 'type = radio' e' type = checkbox' richiedono l'attributo 'name' per condividere il nome del controllo (cioè lo stesso gruppo) [W3 spec] (http: // www.w3.org/TR/html401/interact/forms.html#control-name) – charles

10

Da the spec:

L'attributo name rappresenta il nome s' il form all'interno della collezione forms.

+0

interessante- non ho mai dovuto distinguere le forme in una collezione prima - forse questo è il vero caso d'uso? – Yarin

+2

@Yarin - Puoi usare 'id' per quello. – Quentin

+0

@ Quentin- ok, quindi questo è un altro caso di utilizzo superfluo apparentemente – Yarin

5

Dopo aver assegnato un nome a un elemento, è possibile fare riferimento a tale elemento tramite document.name_of_element in tutto il codice. Non funziona troppo dire, quando non hai più campi con lo stesso nome, ma permette scorciatoie come:

<form name="myform" ...> 

document.myform.submit(); 

invece di

document.getElementsByName('myform')[0].submit(); 
+2

Puoi farlo tramite ID, quindi se questo è l'unico caso d'uso non importa davvero – Yarin

+0

@Yarin come puoi farlo con 'id'? 'document.id' non funziona, a meno che non si aggiungano i metodi prototipo per questo scopo ... – vaxquis

1

È possibile utilizzare l'attributo name come attributo "extra information" - analogamente a un input nascosto - ma questo mantiene le informazioni extra legate al modulo, il che rende solo più semplice la lettura/l'accesso.

+0

Non farlo. Gli input nascosti contengono dati che verranno inviati al server. L'attributo 'name' di un elemento form non sarà. Se si desidera fornire dati extra puramente per accedere al codice lato client, gli attributi 'data- *' sono espressamente forniti a tale scopo. – Quentin

0

Ecco cosa MDN ha da dire in proposito:

name
Il nome del modulo. In HTML 4, il suo uso è deprecato (dovrebbe essere usato invece id). Essa deve essere univoco tra le forme in un documento e non solo una stringa vuota in HTML 5.

(da https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-name)

Trovo un po 'di confusione che specifica che deve essere unico, non vuoto stringa in HTML 5 quando era deprecato in HTML 4. (Direi che il requisito si applica solo se è specificato l'attributo name?). Ma penso che sia sicuro affermare che qualsiasi scopo sia servito è stato sostituito dall'attributo id.