Ho incontrato anche questo problema.
La casella combinata ripristina sempre il valore selezionato in precedenza.
Non è tanto ripristino il valore come l'utente è riselezionare esso dopo si elimina il valore. Cioè: con forceSelection: true
la casella combinata insiste nel rilasciare il suo menu, questo significa che quando un utente torna nella casella combinata per eliminare un elemento, il menu della casella combinata si abbassa con l'oggetto selezionato in origine, l'utente elimina il valore in la casella combinata e le schede alla successiva, la casella combinata cerca di vedere quale elemento è evidenziato nell'elenco a discesa e lo riempie nel campo, voilà, riselezionato.
Invece, se l'utente elimina il valore, quindi preme il tasto ESC per chiudere la combo menu a discesa e poi schede per il prossimo il valore non si riempirà.
Suppongo che questo sia una funzionalità per abilitare il controllo solo della tastiera in modo che non sia necessario fare clic per accedere al menu.
Fortunatamente, non ho impiegato molto tempo per i miei utenti a capire questo e utilizzare il tasto ESC. Ho anche aggiunto la configurazione preventMark: true
per gestire il messaggio di errore quando ciò si è verificato.
Suppongo che se davvero non si può avere questo, è possibile aggiungere un ascoltatore allo change
o anche l'evento validitychange
che controlla se il campo è ora vuoto e quindi comprime il menu se lo è. Questo dovrebbe impedirgli di riselezionare quando si passa ad un altro campo nello stesso modo in cui lo chiude con il tasto ESC.
Bello! È la soluzione più elegante che abbia mai visto fino ad ora –
Puoi anche usare i parametri dell'evento - 'addListener ('change', function (me, newVal) {if (newVal === null) {me.reset();} }); ' – phatskat
Nota: se il tuo ComboBox ha' multiSelect: true', non fare 'newValue === null', invece' newValue.length === 0' (perché ovviamente sarà un array di selezioni) . –