2011-11-29 11 views
11

Sto prendendo in prestito/adattando questo semplice modulo html/javascript impostato per inserire alcuni dati nel database. Il codice originale utilizza campi di testo nel modulo, ma sto usando i pulsanti di opzione. I primi tre passaggi sottostanti sono l'originale, e la mia domanda viene dopo ... cioè, do ai pulsanti radio lo stesso id ... Spero che questo sia chiaro ...Due pulsanti radio condividono un "id"?

Passaggio 1. L'utente inserisce il valore in forma con id "nick"

<tr> 
    <td><label>User</label></td> 
    <td><input class="text user" id="nick" type="text" MAXLENGTH="25" /></td> 
</tr> 

Fase 2. valore associato con id "nick" assegnato alla variabile utilizzando id

var inputUser = $("#nick"); 

Fase 3. ottenere il valore dalla variabile per l'inserimento nel database ...

if(inputUser.attr("value") 

ma se si tratta di due "pulsanti di opzione", piuttosto di un campo "testo" ....

<td><label>Interview</label></td> 
<td><input type="radio" name="interview" id="nick" value="pass" />Pass</td> 
<td><input type="radio" name="interview" id="nick" value="fail" /> Fail</td> 

, io la do i pulsanti di scelta lo stesso "id" in modo che sia ancora così quando assegno il valore della variabile ...

var inputUser = $("#nick"); 

in modo che venga assegnato il pulsante che si trova nell'ID "nick"?

+0

Gli elementi non possono condividere un ID. Porta a comportamenti imprevisti, in particolare quando si utilizza javascript. – mrtsherman

+1

nome dei pulsanti radio potrebbe essere lo stesso non l'id in modo da poter provare in questo modo ** var inputUser = $ (": input [nome = intervista]: controllato"). Val(); ** per il valore del pulsante radio selezionato * * – punit

+0

Si prega di fare riferimento alla specifica HTML 4.01 dove dice che gli ID duplicati non sono consentiti e non è cambiato da quella specifica del 1999. http://www.w3.org/TR/REC-html40/ –

risposta

16

No, un attributo Id deve essere sempre univoco. Se stai usando jQuery (sembra che tu sia), puoi selezionarlo con $('input[name=interview]');.

+0

grazie, sono un principiante, per favore conferma che l'intera linea in cui assegno il valore sarà simile a questa: var inputUser = $ ('input [nome = intervista] '); – Leahcim

+0

@ Michael, a destra, il selettore jQuery ci darà tutti gli input con "nome" impostato su "intervista". inputUser memorizzerà questo oggetto jQuery. – Matthew

+0

Sto provando questo, ma mi sta dicendo che la variabile non è definita http://stackoverflow.com/questions/8320980/how-to-figure-out-where-this-database-insertion-and-retrieval-is-breaking – Leahcim

0

è necessario assegnare lo stesso nome ma ID diverso a input type=radio poiché questa è la proprietà di base del pulsante raido che è necessario selezionare un solo valore dai pulsanti di opzione givel aal.

ma che id non deve essere assegnata ad altri elementi del modulo

0

La id assegnata a un elemento deve essere univoco all'interno del documento. Quindi no, non dovresti usare lo stesso id.

0

Invece di id="nick"

È possibile utilizzare name="nick"

O

class="nick" 
+0

quindi funzionerebbe? var inputUser = $ (". nick"); con il [.] che rappresenta la classe? – Leahcim

+0

@Michael Ya che funzionerebbe '$ (". Nick ")' con '$ .each()' ... Puoi ottenere tutti i valori con questo .... Il modo migliore è per nome '$ ('input [ nome = nick] ') 'ti darà il valore selezionato .... – Wazzzy

1

Non ripetere id's.It è buona norma utilizzare un solo ID per pagina come si deve essere unico. È possibile raggruppare i pulsanti di opzione utilizzando l'attributo nome.

utilizzare $('input[name=interview]') per ottenere il valore.

13

Dal momento che si sta utilizzando jQuery si può facilmente ottenere il valore del pulsante di scelta selezionato utilizzando il selettore :checked:

$("input[name=interview]:checked").val() 

Si dovrebbe non dare più di un elemento lo stesso ID (che è valido HTML e causerà confusi bug nel tuo JavaScript), ma anche se funzionasse, non sarebbe d'aiuto in questo caso, poiché i pulsanti di opzione come gruppo non hanno un valore selezionato: devi determinare quale è attualmente controllato e quindi ottenere il suo valore come mostrato sopra. (Questo non è un problema quando si ottiene il valore sul server Web quando il modulo viene effettivamente inviato, poiché viene inviato solo il valore dalla radio selezionata)

Nota anche che nel codice originale in cui hai detto inputUser.attr("value"), potresti 'ha detto inputUser.val().

4

L'attributo ID è univoco in tutta la pagina. Dovresti avere ID diversi per ciascun pulsante di opzione. Usa sotto il codice per ottenere il valore di input.

var inputUser=$('input:radio[name=interview]:checked').val(); 
+0

Ho provato la tua soluzione ma mi sta dicendo che la variabile non è definita. http://stackoverflow.com/questions/8320980/how-to-figure-out-where-this-database-insertion-and-retrieval-is-breaking – Leahcim

1

Se desidera utilizzare javascript pura è necessario utilizzare ..

document.querySelector('input[name=radio_btn_name]'); 

ma hanno bisogno di browser aggiornato. I vecchi browser potrebbero risultare errati.

Per risolvere questo problema, è necessario utilizzare la libreria javascript (la libreria gestirà il problema). Per questo utilizzare il seguente ..

$('input[name=radio_btn_name]:checked').val(); 
Problemi correlati