2011-11-29 25 views
11

Estoy tomando prestado/adaptando este sencillo formulario html/javascript configurado para poner algunos datos en la base de datos. El código original usa campos de texto en el formulario, pero estoy usando botones de opción. Los primeros tres pasos a continuación son el original, y mi pregunta viene después ... es decir, doy a los botones de radio la misma identificación ... Espero que esto esté claro ...¿Dos botones de radio comparten una "identificación"?

Paso 1. El usuario ingresa valor en la forma con id "nick"

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

Paso 2. valor asociado con id "nick" asignado a la variable utilizando Identificación

var inputUser = $("#nick"); 

Paso 3. obtener el valor de la variable para su inserción en la base de datos ...

if(inputUser.attr("value") 

pero si se trata de dos "botones de radio" en lugar de campo "texto" uno ....

<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> 

¿Doy a los botones de la misma "id", por lo que sigue siendo así cuando le asigno el valor de la variable ...

var inputUser = $("#nick"); 

de modo que cualquier botón que se marque se asignará encontrado en el id "nick"?

+0

Los elementos no pueden compartir una identificación. Conduce a un comportamiento inesperado, en particular al usar javascript. – mrtsherman

+1

nombre de los botones de radio podría ser el mismo no es el ID para que pueda tratar como esto ** var inputUser = $ (": entrada [name = entrevista]: comprueba"). Val(); ** para el valor botón de opción seleccionado * * – punit

+0

Consulte la especificación de HTML 4.01 donde dice que los ID duplicados no están permitidos y no han cambiado desde esa especificación de 1999. http://www.w3.org/TR/REC-html40/ –

Respuesta

16

No, un atributo Id siempre debe ser único. Si está utilizando jQuery (parece que lo es), puede seleccionarlo con $('input[name=interview]');.

+0

gracias, soy un novato, por favor confirmar que toda la línea en la que le asigno el valor se verá así: var inputUser = $ ('entrada de [nombre = entrevista] '); – Leahcim

+0

@Michael, a la derecha, el selector jQuery allí mismo obtendrá todas las entradas con "nombre" configurado en "entrevista". inputUser almacenará este objeto jQuery. – Matthew

+0

Estoy tratando esto, pero me está diciendo la variable no está definida http://stackoverflow.com/questions/8320980/how-to-figure-out-where-this-database-insertion-and-retrieval-is-breaking – Leahcim

0

debe asignar el mismo nombre pero una identificación diferente a input type=radio porque esta es la propiedad básica del botón raido que necesita seleccionar solo un valor de los botones de opción de givel aal.

pero ese id no debe ser asignado a otros elementos de formulario

0

El id asignado a un elemento debe ser único dentro del documento. Entonces, no, no debería usar el mismo id.

0

En lugar deid="nick"

Puede utilizar name="nick"

O

class="nick" 
+0

así que esto funcionaría? var inputUser = $ (". nick"); con el [.] representando la clase? – Leahcim

+0

@Michael Ya que funcionaría '$ (". Nick ")' con '$ .each()' ... Puede obtener todos los valores con esto .... Mejor forma es por nombre '$ ('entrada [ name = nick] ') 'le dará el valor seleccionado .... – Wazzzy

1

no repita id's.It la mejor práctica es utilizar sólo una Identificación por página como debe ser único. Puede agrupar los botones de radio usando el atributo de nombre.

usa $('input[name=interview]') para obtener el valor.

13

dado que está utilizando jQuery se puede obtener fácilmente el valor del botón de opción seleccionado mediante el uso de la :checked selector:

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

que definitivamente no debe dar más de un elemento de la misma ID (que es HTML válido y dará lugar a errores confusos en su JavaScript), pero incluso si funcionó, no ayudaría en este caso ya que los botones de radio como grupo no tienen un valor seleccionado: debe determinar cuál está actualmente marcado y luego obtener su valor como se muestra arriba. (Esto no es un problema al obtener el valor en el servidor web cuando se envía el formulario, porque solo se envía el valor de la radio marcada).

Tenga en cuenta también que en su código original donde dijo inputUser.attr("value"), podría 'dijo inputUser.val().

4

ID de atributo es único en toda la página. Deberías tener ID diferentes para cada botón de opción. Use el código siguiente para obtener el valor de entrada.

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

Intenté su solución pero me dice que la variable no está definida. http://stackoverflow.com/questions/8320980/how-to-figure-out-where-this-database-insertion-and-retrieval-is-breaking – Leahcim

1

Si desea utilizar JavaScript puro tiene que usar ..

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

pero necesita actualización del navegador. Los navegadores antiguos pueden resultar incorrectos.

Para superar este problema, librería javascript es utilizar (biblioteca se encargará de la emisión). Para esto, use lo siguiente ...

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