2011-03-13 23 views
27

Estoy teniendo un tiempo hella que establece el valor de una entrada oculta.JQuery: Cambiar el valor del campo de entrada oculto

Quiero pasar el HTML de entre las etiquetas de opción al campo oculto, ejecutar el título de la página de wordpress 'wp_list_dropdowns(). Lo tengo devolviendo el texto muy bien, y en mi evento de cambio agrega correctamente algo de css (obviamente innecesario en un campo oculto, pero estaba tratando de determinar dónde se están descomponiendo las cosas). Funciona si cambio la entrada oculta a una entrada de texto. He visto en varios lugares en SO que esto es posible, (cambiando el valor de una entrada oculta que es), pero algo me está frenando ahora y no puedo ver la respuesta.

Aquí está la JSFiddle: JavaScript

:

$(".selector").change(function() { 
    var $value = $(this).val(); 
    var $title = $(this).children('option[value='+$value+']').html(); 
    alert($title); 
    $('input#bacon').val($title).css('border','3px solid blue'); 
}); 

HTML:

<select class="selector" name="testselect"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 
</h3> 

<input id="bacon" type="hidden" class="bacon" value="" name="testinput"> 
+1

Tu violín me funciona en Firefox. Comprobé con Firebug si el valor de la entrada oculta cambió y cambia cuando selecciono un valor diferente en el menú desplegable. Sin embargo, tal vez no entiendo la pregunta :-) – StefanS

+0

Funciona bien para mí: la entrada oculta cambia de valor en Chrome 9. En qué navegador (s) no funciona, y qué método usas para verificarlo? –

+0

¿Por qué crees que no funciona correctamente? Tu violín parece hacer exactamente lo que le estás diciendo que haga. – Aaron

Respuesta

17

Su código jQuery funciona perfectamente. The hidden field is being updated.

+1

, pero ¿por qué no funciona http://jsfiddle.net/YvBfP/ – max4ever

+3

@ max4ever Está leyendo el HTML serializado, donde el atributo 'value' reflejará su valor original. Una de las muchas razones por las que no debes usar los métodos relacionados con 'innerHTML' a ciegas. – alex

5

parece funcionar

$(".selector").change(function() { 

    var $value = $(this).val(); 

    var $title = $(this).children('option[value='+$value+']').html(); 

    $('#bacon').val($title); 

}); 

Del cheque con su incendiario. Y no pongas css en la entrada oculta.

+1

parece funcionar ahora. Estaba poniendo el CSS como una herramienta de depuración de jquery muy cruda ... para ver en firebug si había usado el selector correcto. Debo haber necesitado un descanso. Los ojos frescos y el estómago lleno resolvieron lo que aparentemente no se rompió (por una vez). – helgatheviking

0

Si está haciendo esto en Drupal y usa la API de formulario para cambiar el # tipo de texto a 'oculto' en hook_form_alter (por ejemplo), tenga en cuenta que el HTML de salida tendrá envoltorios DIV diferentes (u omitidos) , ID y nombres de clase.

27

Es simple como:

$('#action').val("1"); 

#action es oculto Identificación del campo de entrada.

+0

¡Funcionó como un encanto! – ersnh

Cuestiones relacionadas