Ich scheinen nicht in der Lage, das Ereignis onchange korrekt zu einem Dijit.form.Select Widget anfügen. Jedoch bin ich neu in der Webentwicklung, also könnte ich etwas komplett idiotisches tun (obwohl, wie ich es am besten beurteilen kann (und ich habe alle Dokumente gelesen, die ich finden konnte), bin ich nicht). Ich stellte sicher, dass die Body-Klasse dem Dojo-Thema entspricht, dass ich dojo.require() für alle Widgets, die ich verwende (und dojo.parser), und immer noch, nada. Der Code, den ich benutze ist:Ich kann nicht onChange zu feuern für dijit.form.Select
dojo.addOnLoad(function() {
var _query = dojo.query('.toggle');
for (var i in _query) {
dojo.connect(_query[i], 'onchange', function (ev) {
console.log(ev + ' fired onchange');
});
}
});
Jede Hilfe würde geschätzt werden.
Addition: nach dem Graben mehr in die Interna von wie Dijit Widgets darstellt, entdeckte ich, dass, wenn ich das Attribut-Wert-Paar DojoType = 'Dijit.form.Select' zu meinem HTML-Element (dies tut dies deklarativ), Dijit tatsächlich Rendert eine einreihige Zweifarben-Tabelle. Das erste Element der Tabelle ist ein Span (mit der Klasse dijitSelectLabel), von dem ich annahm, dass er nur das ausgewählte (oder Standard) Element anzeigt. Das zweite Element scheint eine Schaltfläche zu sein, die als Abwärtspfeil dargestellt wird und die Anzeige des Menüs als Reaktion auf bestimmte DOM-Ereignisse umschaltet. Auch (und ich dachte, das wäre ziemlich raffiniert), platziert Dijit die Auswahloptionen nicht in der DOM-Struktur, bis eines dieser Ereignisse ausgelöst wird. Ich habe den HTML-Code im Firebug direkt nach einem neuen Pager gelesen (bevor ich irgendetwas angeklickt habe), und die zweite Option ist nirgendwo zu finden. Dann, sobald ich auf die Pfeiltaste klicke, gibt es ein Dijit.Menu Widget, Dijit Sticks ein Dijit.Menu an das Ende des Körpers Knoten; Nachdem ich irgendwo anders geklickt habe, ist das Menü-Widget immer noch das lastChild des Körpers, jetzt ist es nur versteckt und nicht an das Formular angehängt. Widget auswählen.
Sollte es wirklich so kompliziert sein, wenn ich nur ein anderes dijit.form-Widget im DOM-Baum platzieren will, je nachdem, was der Benutzer auswählt?
Fazit: Es stellte sich heraus, es war ein Großschreibung Problem.
dojo.connect(widget_obj, 'onChange', function_obj);
funktioniert, während
dojo.connect(widget_obj, 'onchange', function_obj);
nicht funktioniert.
So hatte ich Recht, dass ich völlig dumm war. Ich nahm an, dass, weil die Kleinbuchstaben-Version funktioniert, wenn sie ein html-Tag als Attribut platziert, Dojo dasselbe behandeln würde. Dies ist sinnvoll, da dijit.form.Select kein .onchange-Attribut, aber ein .onChange-Attribut hat. (Ich blieb am Ende mit einem .Select über einen .FilteringSelect, weil ich meine Benutzer nicht den Eindruck haben, dass sie etwas eintippen können.) Also, von wem von euch gebe ich die Antwort (weil Sie beide hatte ich Änderungen in Ihren Posts, ich glaube, ich war einfach zu unerfahren um zu erkennen, dass der Fall wichtig war)?
Ich versuchte sowohl dijit.byId (nodeId) und dijit.byNode (Knoten) und keiner der Ansätze funktionierte. – yarmiganosca