2012-07-11 18 views
6

En primer lugar, gracias a los chicos de backbone-forms que hicieron una herramienta que se integra perfectamente en el framework backbone.js.backbone-forms con campos condicionales

Estoy usando backbone.js con el complemento backbone-forms, pero necesito crear campos condicionales.

Digamos que tengo el siguiente formulario. Quiero mostrar (o no) una sola entrada de línea con el texto o un área de texto de acuerdo con el valor seleccionado en el select.

<form method="post" action="">     
    <select > 
     <option value="" selected="selected">choose one</option> 
     <option value="1" >line</option> 
     <option value="2" >area</option> 
    </select> 
    <input id="element_1" /> 
    <textarea id="element_2" ></textarea> 
</form> 

Un comportamiento como éste se implementa de forma predeterminada en la columna vertebral?

Si no es así, ¿cómo puedo implementarlo con javascript y formularios de retroceso?

gracias.

+0

http://jsfiddle.net/evilcelery/c5QHr/ –

Respuesta

2

No hay defecto hecho implementation.In, completamente por su cuenta es también muy simple, por favor referirse al siguiente código:

//Pseudo code 
var line = $("element_1"),area = $("element_2"); 
if(selectvalue ==="1"){ 
    line.show(); 
    area.hide(); 
} 
else{ 
    line.hide(); 
    area.show(); 
} 
+0

Gracias mucho por su responder. +1! Sin embargo, me preguntaba si hay una forma de incluir el script en el modelo/esquemas de backbone-forms. –

7

puede enlazar eventos al elemento de selección y hacer que alternar la visibilidad de otros elementos de la forma.

Prueba esto:

$(function() { 

    //The form 
    var form = new Backbone.Form({ 
     schema: { 
      inputType: { type: 'Select', options: ['line', 'area'] }, 
      line: 'Text', 
      area: 'TextArea' 
     } 
    }).render(); 

    form.fields['area'].$el.hide(); 

    form.on('inputType:change', function(form, editor) {   
     form.fields['line'].$el.toggle(); 
     form.fields['area'].$el.toggle(); 
    }); 

    //Add it to the page 
    $('body').append(form.el); 
}); 

Aquí hay algo de código en vivo: http://jsfiddle.net/shioyama/grn6y/

Derivado de esto: https://groups.google.com/d/topic/backbone-forms/X5eVdTZWluQ/discussion

+0

Actualicé el jsfiddle vinculado en esta respuesta para usar rawgit.com en lugar de raw.github.com - esto proporciona el tipo MIME correcto para que los navegadores ejecuten el JS que queremos cargar. http://jsfiddle.net/grn6y/43/ –