Frage

Ich habe einige Schaltflächen in einer unteren Symbolleiste eines Rasterfelds, mit denen das Hinzufügen und Entfernen von Datensätzen aus dem Zeilenbearbeitungsraster gesteuert wird.

Die Handler sind ziemlich einfach:Die Schaltfläche "Neu" erstellt eine Instanz des Modells, hängt sie an das Raster an und öffnet dann einen Zeileneditor für die neue Zeile;Die Schaltfläche "Bearbeiten" öffnet nur den Zeileneditor der ausgewählten Zeile;"entfernen" zerstört den Datensatz aus dem Speicher und aktualisiert die Rasteransicht.

Aus irgendeinem Grund verlieren diese Schaltflächen nicht die Fokusklasse, die ihnen einen Rahmen gibt, wenn sie den Fokus haben.Hier ist ein Bild:

enter image description here

Im Bild haben sowohl die Schaltfläche "Neu" als auch die Schaltfläche "Entfernen" die Fokusklasse. Wenn ich auf die Schaltfläche "Bearbeiten" drücke, bleiben die Fokusklassen auch nach einem vollständigen Zeilenbearbeitungsvorgang und Schließen des Zeileneditors erhalten.

Ich habe festgestellt, dass die Fokusklasse verschwindet, wenn ich mit der Maus auf eine dieser permanent "fokussierten" Schaltflächen fahre und dann mit der Maus davon wegfahre und dann auf etwas anderes klicke.

Ich weiß, dass ich einen Unschärfehandler für alle Schaltflächenkomponenten in meine jeweiligen Controller einfügen könnte, aber ich hätte gedacht, dass diese Funktionalität integriert ist, also frage ich, ob ich irgendwo in den Dokumenten etwas verpasst habe.

Die Klassen, die es nicht loslassen wird, sind diese:

x-focus x-btn-focus x-btn-default-toolbar-small-focus

Dies ist mit ExtJS 4.1.0 in FF10 unter Windows 7 der Fall.Aber ich habe ein ähnliches Verhalten in ExtJS 4.02 und 4.07 bemerkt, musste es bisher nur nicht handhaben.

War es hilfreich?

Lösung

Ich habe herausgefunden, was es war:

Irgendwann in der Handlerkette für jede dieser Schaltflächen wird die Schaltfläche deaktiviert.Wenn eine Schaltfläche in ExtJS deaktiviert ist, wird verhindert, dass die blur ereignis vom Schießen.

Es war notwendig, die Schaltflächen zu deaktivieren, damit die Lösung einfach hinzugefügt werden kann button.blur() im Handler war der richtige Weg, dies zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top