Cambiar un valor de campos de entrada ocultos cuando se selecciona un botón de opción

Quiero cambiar el valor de un campo de entrada oculto cada vez que un usuario marca un botón de opción.

Así es como se ve mi HTML.

<input type="hidden" id="ZAAL_NAME" value="" name="ZAAL_NAME" />

<input type="radio" name="zaal_ID" value="ROOM1" onclick="change">
<input type="radio" name="zaal_ID" value="ROOM2" onclick="change"> 
<input type="radio" name="zaal_ID" value="ROOM3" onclick="change">

Ahora quiero que cada vez que verifique un botón de opción, el valor de ese botón de opción se convierta también en el valor del campo de entrada oculto. ¿Alguien sabe cómo hacer eso? Esto es lo que tengo hasta ahora.

   $('input[name="radbut"]').click(function() {
    console.log(this.value);
    $('ZAAL_NAME').val(this.value);
});

¿Alguien podría ayudar?

Saludos cordiales,

stephann

preguntado el 01 de junio de 12 a las 12:06

¿Porqué querrías eso? Terminarás con el mismo valor en ambos ZAAL_NAME y zaal_ID cuando envíe el formulario. ¿Por qué no simplemente usar zaal_ID en su procesamiento del lado del servidor? -

@lanzz Ojalá pudiera hacer +1 en tu comentario varias veces -

Porque necesito ingresar el ID en una tabla y el zaal_NAME en otra. También para dar datos a mi base de datos debo usar el atributo de nombre. Es por eso ! -

no olvide marcar la respuesta como aceptada si tiene la información que desea .. -

6 Respuestas

su línea onclick handler no funcionará ya que no incluyó paréntesis: debe ser onclick="change()" para llamar realmente a su función. Pero deberías cambiarlo a onclick="change(this);" para pasar una referencia al botón en el que se hizo clic a su función, entonces:

function change(el){
    $("#ZAAL_NAME").val(el.value) ;
}

También su selector jQuery necesita un # para seleccionar por id.

Sin embargo, mejor sería eliminar el en línea onclick de su marcado y hacerlo así:

$('input[name="zaal_ID"]').click(function() {
    $('#ZAAL_NAME').val(this.value);
});

Este último debería estar en un controlador listo para documentos y/o en un bloque de script que aparece después de los botones de opción en la fuente de la página.

Nota: al obtener el valor del elemento en el que se hizo clic, puede decir $(el).val() or $(this).val() (dependiendo de cuál de las dos funciones estés viendo), pero dado que el y this son referencias al elemento DOM con el que puede obtener su propiedad de valor directamente el.value or this.value.

Respondido el 01 de junio de 12 a las 13:06

Lo he hecho de la segunda manera, pero cuando miro Firebug, no establece el valor: stephann

He editado mi publicación. Pero el archivo console.log no imprime nada. stephann

Lo siento, no me di cuenta antes de que el # se había dejado al principio del selector de jQuery (necesario para seleccionar por ID de elemento). Respuesta actualizada. Acabo de ver tu edición: ¿de dónde viene "radbut"? Eso no coincide con el nombre del elemento en tu html... - nnnnnn

¿Dónde debe colocarse el #? - stephann

Vea mi respuesta actualizada para el #. Y mi comentario anterior actualizado sobre "radbut". - nnnnnn

$('input[name="zaal_ID"]').change(function(){
   $('#ZAAL_NAME').val( this.value );
})

Respondido el 29 de diciembre de 14 a las 21:12

function change(){
   $("ZAAL_NAME").val( $(this).val() ) ;
}

or

function change(){
   $("ZAAL_NAME").val($("input[type='radio']:checked").val()) ;
}

Respondido el 01 de junio de 12 a las 12:06

intentar -

$(':radio').change(function(){
   $('#ZAAL_NAME').val($(this).val());
})

Demostración: http://jsfiddle.net/KMXnR/

Respondido el 01 de junio de 12 a las 12:06

utilizan el onclick="change(this.value);" y la función se usa así

function change(e){
    $("ZAAL_NAME").val(e) ;


}

Respondido el 01 de junio de 12 a las 16:06

Puedes usar es

$("input:radio[name=ZAAL_NAME]").click(function() {
     var value =  $(this).val(); 
     // or $('input:radio[name=theme]:checked').val(); 
     $("#ZAAL_NAME").val(value); 
 });

en breve

$("input:radio[name=ZAAL_NAME]").click(function() {
     $("#ZAAL_NAME").val( $(this).val() ); 
 });

Respondido el 01 de junio de 12 a las 13:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.