È valido avere più elementi di input del modulo con lo stesso nome?


11

È markup valido ed è valido per le specifiche HTML / HTTP? Se volessi avere

<form>
<input name="email" />
<input name="email" />
<input name="email" />
</form>

è valido?


Per definizione, i pulsanti di opzione nello stesso gruppo hanno lo stesso nome.
Mr White,

Risposte:


9

Come indicato su SO :

I browser ci stanno bene. Tuttavia, il modo in cui la libreria dell'applicazione analizza può variare.

I programmi dovrebbero raggruppare elementi identici. Mentre la specifica HTML non lo dice esplicitamente, è implicitamente dichiarata nella documentazione sulle caselle di controllo:

"Diverse caselle di controllo in un modulo possono condividere lo stesso nome di controllo. Pertanto, ad esempio, le caselle di controllo consentono agli utenti di selezionare più valori per la stessa proprietà."

In una nota a margine, in PHP puoi avere campi modulo con lo stesso nome se usi la sintassi arry di PHP per il nome del campo:

<form>
<input name="email[]" />
<input name="email[]" />
<input name="email[]" />
</form>

Questo farà sì che il browser di inviare più i campi del modulo in una sintassi che PHP userà per compilare una matrice per questi campi: $_REQUEST['email']. Se usi PHP questo è il modo preferito di gestirlo.


5

HTML5

La sezione non normativa 4.10.1.3 La configurazione di un modulo per comunicare con un server afferma esplicitamente che è valido:

Più controlli possono avere lo stesso nome; ad esempio, qui diamo a tutte le caselle lo stesso nome e il server distingue quale casella è stata selezionata vedendo quali valori vengono inviati con quel nome - come i pulsanti di opzione, vengono anche assegnati valori univoci con l'attributo value.

La versione normativa di questo è semplicemente che non è vietata da nessuna parte, e l'algoritmo di invio del modulo dice esattamente quale richiesta dovrebbe essere generata:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.