2012-08-01 17 views
7

Sto utilizzando una combobox ExtJS. C'è un cursore di battitura quando ci si concentra sulla casella combinata. Ho provato a implementare editable: false durante la creazione della casella combinata, ma ha aiutato solo per Chrome.Rimuovi il cursore di digitazione dalla casella combinata

Ha anche provato la funzione clearListeners() per vedere se questo funziona su quel cursore - non ha aiutato, appare ancora in FireFox e IE.

L'altra idea è di impostare disabled nel campo di input in combobox. Quando l'ho fatto manualmente, mi ha aiutato.

Ma quando ho scritto il prossimo

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

non ha aiutato - non lo so, forse l'espressione è sbagliato.

risposta

12

Il motivo per cui si vede un cursore è perché la casella combinata ottiene lo stato attivo, quindi il modo più semplice per gestirlo è spostare lo stato attivo sul selettore a discesa ogni volta che la combo ottiene lo stato attivo.

Basta aggiungere questo onFocus config alla configurazione 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(); 
}, 

Inoltre, io consiglierei facendo solo questo se si tratta di una combobox forceSelection: true. Rovinerà la capacità degli utenti di digitare qualsiasi cosa nel campo.

+0

come rendere il cursore quando si passa al campo combinato? – freestyle

+0

Anche se il tuo negozio è stato caricato nel click dropDown, puoi caricare lo store nell'evento focus come: myStore.load(); Inizialmente questo era il mio problema, fino a quando ho realizzato che il negozio non era ancora stato caricato. Spero che questo possa aiutare gli altri. –

+1

Per forzare il funzionamento di tutti i browser in Ext 5 ora è necessario utilizzare me.getPicker(). Focus (true); –

3

È possibile aggiungere la configurazione,

modificabile: true

Poi si comporta come il normale Combo.

+0

Sfortunatamente c'è un problema noto che funziona solo su chrome, che è ciò che sta cercando di risolvere. –

0

Try -

Per IE

combo.inputEl.set ({disabilitato: 'disattivato'});

Per Firefox -

combo.inputWrap.set ({disabilitato: 'disattivato'});

Per Chrome -

combo.inputCell.set ({disabilitato: 'disattivato'});

Questo funziona bene.