2010-01-19 10 views
11

dijit.form.FilteringSelect è vicino a ciò di cui ho bisogno. Ho provato un sacco di modi per fare quello che voglio, ma essendo un principiante dijit non so mai se sto andando nella giusta direzione.dijit.form.FilteringSelect con ricerca sottostringa

Quando inizio a digitare in FilteringSelect, vedo solo le opzioni che iniziano con ciò che ho digitato. Come una query su value + "*"
Quello che mi serve è vedere qualsiasi opzione che abbia ciò che digito ovunque. Come una domanda su "*" + value + "*"

Quindi, se c'è "Apple", "Banana" e "Arancione", e io digito "e", dovrei vedere "Apple" e "Arancione". Se possibile, con la stringa di ricerca ha sottolineato: "Appl e", "Orang e"

Credo di aver bisogno di un po di memorizzazione dei dati intelligente, ma ovunque vada sembra un vicolo cieco. Mi sto perdendo qualcosa, o dovrei farlo in un modo completamente diverso?

risposta

15

si desidera utilizzare l'attributo queryExpr:

var f = new dijit.form.FilteringSelect({ 
... 
queryExpr: "*${0}*", 
... 
}, node); 

Avviso la * prima e dopo i $ {0}.

+1

Nota che se imposti 'queryExpr' su un valore diverso da quello predefinito (inizio del termine di ricerca) potresti anche voler impostare' searchDelay: 1000' (1 sec o più) b/c ogni volta che cerca, sovrascrive cosa l'utente ha digitato w/il termine superiore. –

+2

In alternativa al ritardo, è possibile impostare 'autoComplete' su false. https://bugs.dojotoolkit.org/ticket/13915 –

0

Nel nostro progetto abbiamo risolto questo problema con una patch su dojo.data.util.filter sovrascrivendo il metodo patternToRegExp.

4

Ehi! È necessario aggiungere queryExpr = "$ {0}" al componente filteringselect.

Per impostazione predefinita, è $ {0} *, il che significa che cerca le stringhe che iniziano con ciò che è stato digitato.

Come suggerimento per gli altri, in JSP, ho dovuto modificare la query expr. per queryExpr = "\ $ {0}".

+0

i documenti suggeriscono anche che dovresti usare 'highlightMatch =" all "' insieme a questo (ma non sembra funzionare abbastanza bene per me come dojo1.3) –

+1

+1 per il suggerimento JSP. –

0

Dopo un sacco di tempo cercando di riuscire a farlo funzionare, il consiglio di Mada era corretto ma mancava il * prima e dopo. La queryStr corretta (in JSP) è '*\${0}*'