javascript - tutorial - Dojo: Dojo Onblur-Ereignisse




marionette js (2)

Ich habe ein Formular-Setup mit Dojo 1.5. Ich benutze eine dijit.form.ComboBox und eine dijit.form.TextBox

Die Combobox hat Werte wie "Auto", "Fahrrad", "Motorrad" und die Textbox soll ein Adjektiv zur Combobox sein. Es ist also egal, was in der Combobox ist, aber wenn die ComboBox einen Wert hat, dann MUSS etwas in der TextBox ausgefüllt werden. Optional, wenn nichts in der ComboBox ist, dann kann nichts in der TextBox sein und das ist in Ordnung. In der Tat, wenn etwas nicht in der Combobox ist, dann muss nichts in der Textbox sein.

Bei der normalen Kodierung würde ich einfach ein onBlur-Ereignis im Textfeld verwenden, um zu einer Funktion zu gehen, die überprüft, ob die ComboBox einen Wert hat. Ich sehe im Dojo, dass das nicht funktioniert ... Code Beispiel ist unten ...

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"
                />

Mein erster Versuch war, eine onBlur innerhalb des <input> -Tags des Descriptor hinzuzufügen, aber entdeckte, dass das nicht funktioniert.

Wie geht Dojo damit um? Geht es um einen dojo.connect-Parameter? Obwohl im obigen Beispiel die Combobox die ID "vehicle_1" hat und die Textbox die ID "filter_value_1" hat, können zahlreiche Comboboxen und Textboxen nach oben nummeriert werden. (Fahrzeug_2, Fahrzeug_3, usw.)

Jeder Rat oder Links zu Ressourcen würde sehr geschätzt werden. Janie

https://code.i-harness.com


onBlur scheint für mich onBlur zu funktionieren, sogar in den HTML-deklarierten Widgets. Hier ist ein sehr rudimentäres Beispiel:

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

(Lassen Sie Firebug / webkit inspector / IE8 dev tools öffnen, um console.log Nachrichten zu sehen.)

Für eine bessere Lösung könnten Sie aber auch an anderen Widgets interessiert sein ...

Hoffentlich können Sie damit beginnen.


Um das Ereignis onBlur hinzuzufügen, sollten Sie dojo.connect () verwenden:

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

Wenn Sie über mehrere Eingänge verfügen, mit denen Sie eine Verbindung herstellen müssen, sollten Sie eine benutzerdefinierte Klasse für diejenigen hinzufügen, die verwischt werden müssen, und dojo.query verwenden, um eine Verbindung zu allen herzustellen:

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 */ });
  });

In der Funktion, die an dojo.connect übergeben wird, könnten Sie Code hinzufügen, um die Nummer am Ende zu entfernen und damit jeden Eingang von filter_value_ * für die Validierung zu referenzieren.

dojo.connect ()

Combobox Dokumentation







dijit.form