2010-10-14 15 views
7

Per quanto so che ci sono due modi per ottenere il valore da una casella di testo ojavascript nome vs ID

document.formName.textboxName.value; 

o

document.getElementbyId('textboxId').value; 

quanto ho capito utilizzando il nome modulo significherebbe Ho meno codice da scrivere, come nome può essere utilizzato per la pubblicazione di dati e ottenere il valore (a parte l'uso di Ajax). Come se stessimo semplicemente postando un modulo standard, userei lo name per postare ma non posso usare id?

ad es. in php userei

$_POST['texboxName']; 

Se io dove avere e ID sulla casella di testo non riesco a ottenere il valore con PHP?

Qual è il metodo standard raccomandato per eseguire questa operazione e utilizza name come browser adatto? Collegamenti, se possibile, grazie, grazie.

risposta

12

La guida definitiva in questo è il HTML specification.

cose che si distinguono là fuori:

  • id è valida per qualsiasi elemento HTML, mentre name si applica solo a pochi eletti (a, input, textarea e forse pochi altri).
  • Un input (e textarea) elemento richiede il name da impostare se si desidera che venga inviato.
+0

Abbastanza buono per me, grazie! :) – Elliott

+0

@Vilx - Sono consapevole che questo è un po 'vecchio, ma mi chiedevo cosa intendessi per "condividere lo stesso spazio dei nomi" – PeanutsMonkey

+0

@PeanutsMonkey - Grazie per avermelo fatto notare. Mi sono sbagliato. La condivisione di spazi dei nomi è [valida solo per gli elementi di ancoraggio] (http://www.w3.org/TR/1999/REC-html401-19991224/struct/links.html#anchors-with-id). Il collegamento lo spiega meglio, ma in poche parole, quando si usa il '# nell'URL per passare a un ancoraggio specifico, esso esamina sia gli attributi' id' che 'name' per determinare a quale ancoraggio scorrere. Se ci fossero due ancore diverse in cui il proprio id 'era uguale al 'nome' dell'altro, il browser si confondeva. Quindi la specifica lo rende invalido. –

1

Uso tipicamente entrambi. Come hai detto, name è utile per utilizzare i dati tramite JavaScript e anche dopo che è stato inviato. Sentiti libero di usare caratteri aggiuntivi nello name secondo necessità: tendo ad usare [] s nei miei nomi quando l'input sarà usato in un array sul lato server.

L'attributo id può essere utilizzato per accedere all'elemento tramite JS/DOM. Viene anche utilizzato dall'attributo di for. Se lo fai con le caselle di controllo, ad esempio, facendo clic sull'etichetta, la casella verrà controllata. Questo è un grande vantaggio per l'usabilità.

1

Ritengo una buona pratica avere un nome e id per ogni elemento del modulo. Il motivo è che se si desidera aggiungere etichette o stili tramite sytlesheets (cosa che si dovrebbe fare), allora ha senso avere entrambi.

Per quanto riguarda l'accesso con javascript: il modo migliore sarebbe quello di andare con l'id dell'elemento, perché se si cambia il nome del modulo tutto si rompe. Questo non succede quando usi l'id.

+1

La maggior parte delle attività JavaScript che si occupano di un modulo, tuttavia, viene avviata all'interno del modulo (da eventi pulsante e campo o dall'evento onsubmit del modulo stesso), quindi l'uso di 'this.form' o' this' dal chiamante non ha ambiguità . Si noti, inoltre, che un "campo" può coinvolgere più di un elemento, quindi il controllo dei valori per nome piuttosto che per id è spesso una necessità (si pensi ai pulsanti di opzione e alle caselle di controllo). –

1

Preferisco usare gli ID, in quanto la "funzione" (vale a dire che cosa stai cercando di ottenere) del tuo codice non è legata alla semantica. Per me, .GetElementById ('myid') si distingue maggiormente, ed è più leggibile che solo avere "myid" sparsi nel codice. Inoltre puoi rinominare più facilmente gli elementi. Questo è il mio valore di 2p!