2012-09-17 13 views
5

Estoy desarrollando una aplicación de Rails y necesito mostrar/ocultar un determinado campo cuando se hace clic en un botón de opción.Los raíles muestran los campos cuando el botón de opción está marcado

Estoy usando javascript pero parece que no puedo hacerlo funcionar.

¿Algún consejo sobre cómo solucionar eso?

Radio código del botón

<%= radio_button 'relat', 'atu', 'yes' %> ATU 
<%= radio_button 'relat', 'atu', 'no' %> No ATU 

campo que va a mostrar cuando el primer botón se comprueba

<div id="esatu" style="display:none"> 
<p> 
    <label for="relat_tipus_atu"> 
    Tipus ATU 
    </label> 
    <%= select_tag :tipus_id, "<option value=''></option>".html_safe + options_from_collection_for_select(@tipus, :id, :codi) %> 
</p> 

Respuesta

10

En primer lugar, dar a sus botones de radio algunos nombres genéricos, para que pueda usarlos con javascript más fácilmente.

<%= radio_button 'relat', 'atu', 'yes', {:class => "relat__atu relat__atu_yes"} %> ATU 
<%= radio_button 'relat', 'atu', 'no', {:class => "relat__atu relat__atu_no"} %> No ATU 

Ahora se adjunta un controlador de eventos para el evento de cambio. Y alternar la visualización de su otro elemento, dependiendo de si el botón de radio es el botón "sí".

$(".relat__atu").on("change", function(){ 
    $("#esatu").toggle($(this).hasClass("relat__atu_yes")); 
}); 
+0

egze, su solución funcionó a la perfección, no me di cuenta de que necesitaba clases para hacer que todo funcione. ¡De nuevo muchas gracias! – Wiggin

+0

No necesita clases para que funcione. Podrías escribir lo mismo simplemente usando nombres de etiqueta. Sería un código de aspecto más feo :) – egze

Cuestiones relacionadas