underscore tutorial traductor redes react backbone javascript javascript-events dojo onblur dijit.form

javascript - tutorial - github backbone



Dojo: dojo onblur eventos (2)

Tengo una configuración de formulario con dojo 1.5. Estoy usando un dijit.form.ComboBox y un dijit.form.TextBox

El Combobox tiene valores como "auto", "bicicleta", "motocicleta" y el cuadro de texto está destinado a ser un adjetivo del Combobox. Por lo tanto, no importa lo que esté en el Combobox, pero si el ComboBox tiene un valor, entonces DEBE rellenarse algo en el TextBox. Opcionalmente, si no hay nada en el ComboBox, entonces nada puede estar en el TextBox y eso está bien. De hecho, si algo no está en el Combobox, entonces NO DEBE haber nada en el cuadro de texto.

En la codificación normal, simplemente usaría un evento onBlur en el cuadro de texto para ir a una función que verifica si el ComboBox tiene un valor. Veo en el dojo que esto no funciona ... El ejemplo del código está a continuación ...

Vehicle: <input dojoType="dijit.form.ComboBox" store="xvarStore" value="" searchAttr="name" name="vehicle_1" id="vehicle_1" /> Descriptor: <input type="text" dojoType="dijit.form.TextBox" value="" class=lighttext style="width:350px;height:19px" id="filter_value_1" name="filter_value_1" />

Mi primer intento fue agregar un onBlur dentro de la etiqueta <input> del Descriptor, pero descubrí que eso no funciona.

¿Cómo maneja Dojo esto? ¿Es a través de un parámetro dojo.connect? Aunque en el ejemplo anterior, el cuadro combinado tiene una identificación de "vehicle_1" y el cuadro de texto tiene una identificación de "filter_value_1", puede haber numerosos cuadros combinados y cuadros de texto numerados secuencialmente hacia arriba. (vehículo_2, vehículo_3, etc.)

Cualquier consejo o enlace a los recursos sería muy apreciado. Janie


onBlur parece funcionar bien para mí, incluso en los widgets declarados HTML. Aquí hay un ejemplo muy rudimentario:

http://jsfiddle.net/kfranqueiro/BWT4U/

(Haga que firebug / webkit inspector / IE8 dev tools se abran para ver los mensajes de console.log).

Sin embargo, para una solución más ideal a esto, también podría estar interesado en algunos otros widgets ...

Espero que esto te pueda ayudar a comenzar.


Para agregar el evento onBlur, debe usar dojo.connect ():

dojo.connect(dojo.byId("vehicle_1"), "onBlur", function() { /* do something */ });

Si tiene varias entradas a las que necesita conectar esto, considere agregar una clase personalizada para las que necesitan borrosidad y usar dojo.query para conectarse a todas ellas:

Vehicle: <input dojoType="dijit.form.ComboBox" store="xvarStore" class="blurEvent" value="" searchAttr="name" name="vehicle_1" id="vehicle_1" /> dojo.query(".blurEvent").forEach(function(node, index, arr) { dojo.connect(node, "onBlur", function() { /* do something */ }); });

En la función que se pasa a dojo.connect, puede agregar un código para quitar el número al final y usarlo para hacer referencia a cada entrada de filter_value_ * para la validación.

dojo.connect ()

Documentación de Combobox