ExtJs-ben egy beviteli mezőnél akkor fut le az változás esemény, ha az adott mezőről lemegyünk. Ami többé, kevésbé megfelelő viselkedés, ám egy TriggerField-nél, például egy dátumválasztónál jó lenne, ha a megjelenő naptárban egy dátum kiválasztása után is lefutna a változás esemény.
renderTo: Ext.getBody(),
listeners: {
change: function() { console.log( 'change' ); }
}
});
A menuListeners.select átírásánál két dolgot emelnék ki. 1. le kell ellenőrizni, hogy valóban történt-e változás?Azaz elképzelhető, hogy ugyanazt a dátumot választottuk ki, mint az eredeti dátum volt. 2. a startValue értéket is be kell állítani, hogy a onBlur-nál ne kapjunk ismét change eseményt.
if( String(value) != String(this.getValue()) ) {
this.setValue(value);
this.fireEvent('change', this, value, this.startValue );
this.startValue = value;
}
}
Mivel a menuLisnters-nek vannak még más függvényei (show, hide), ezért nem a megszokott Ext.override függvénnyel írjuk felül, hanem direktbe. Ennek ellenére a override címkét megkaphatja ez a bejegyzés is.