2012-08-01 10 views
7

Używam combobox ExtJS. Podczas ustawiania ostrości na comboboxie znajduje się kursor pisania. Próbowałem zaimplementować editable: false podczas tworzenia combobox, ale pomógł tylko dla chrome.Usuń kursor pisania z combobox

Również wypróbowana funkcja clearListeners(), aby sprawdzić, czy działa na tym kursorem - nie pomogła, nadal pojawia się w FireFox i IE.

Innym pomysłem jest ustawienie disabled w polu wprowadzania w combobox. Kiedy zrobiłem to ręcznie, pomogło to.

Ale kiedy pisałem następny

Ext.get('bu-encodingcount-combobox').select('input').set({disabled:'disabled'});

to nie pomogło - nie wiem, może wyrażenie jest źle.

Odpowiedz

12

Powodem, dla którego widzisz kursor, jest to, że combobox skupia się na fokusie, więc najprostszym sposobem na obsłużenie tego jest przesunięcie fokusu do rozwijanego selektora, gdy fokus uzyska fokus.

Wystarczy dodać ten onFocus config do konfiguracji combobox:

// example combobox config 
xtype: 'combo', 
allowBlank: false, 
forceSelection: true, 
valueField:'id', 
displayField:'name', 
store: myStore, 

// add this "onFocus" config 
onFocus: function() { 
    var me = this; 

    if (!me.isExpanded) { 
     me.expand() 
    } 
    me.getPicker().focus(); 
}, 

Również polecam robi to tylko wtedy, gdy jest to forceSelection: true combobox. Zniszczy to zdolność użytkowników do wpisywania czegokolwiek na polu.

+0

Jak ustawić kursor po najechaniu na pole kombi? – freestyle

+0

Również jeśli Twój sklep jest ładowany na kliknięcie dropDown, możesz załadować sklep do wydarzenia fokusa jako: myStore.load(); Początkowo był to mój problem, dopóki nie zorientowałem się, że sklep nie został jeszcze załadowany. Mam nadzieję, że to pomoże innym. –

+1

Aby zmusić to do działania we wszystkich przeglądarkach w Ext 5, musisz teraz użyć me.getPicker(). Focus (true); –

3

Możesz dodać config,

edycji: false

wtedy zachowuje się jak normalny Combo.

+0

Niestety istnieje znany problem, który działa tylko na chrome, i to właśnie próbuje rozwiązać. –

0

Try -

Dla IE

combo.inputEl.set ({niepełnosprawnych: 'wyłączone'});

Na Firefox -

combo.inputWrap.set ({wyłączone: 'wyłączony'});

w Chrome -

combo.inputCell.set ({wyłączone: 'wyłączony'});

To działa dobrze.

Powiązane problemy