PDA

Visualizza la versione completa : Ricerca dinamica in una combobox


Cool81
18-03-2009, 12:00
Ciao,
premessa: sono molto molto principiante.

Il mio problema il seguente:

Ho una combobox con un elenco di nomi. E' possibile fare una ricerca dinamica su questa combo, nel senso posso fare in modo che mentre l'utente scrive il nome che vuole ricercare, la combo si riempie con i possibili risultati corrispondenti alla ricerca?

Grazie,

:confused: :confused: :confused: :confused: :confused: :confused: :confused:

weppos
18-03-2009, 12:47
S, si chiama autocomplete.
C' un plugin per Rails chiamato auto_complete, un po' datato ma che puoi usare come base di studio.
http://railscasts.com/episodes/102-auto-complete-association

E' probabile che dovrai adattare il sistema alle tue esigenze.

Cool81
18-03-2009, 12:55
S, avevo letto dell'autocompletamento. Ma nn sapevo se fosse quella la soluzione per i seguenti dubbi:

1. ho letto che si pu applicare solo ad una textfield, mentre io ho una combobox, quindi per usarlo dovrei cambiare?

2. ma ogni volta che l'utente digita un carattere, avviene una chiamata al server che aggiorna la lista dei possibili risultati? Se fosse cos, c' una soluzione alternativa per non dover effettuare ogni volta una chiamata al server?


ps: vorrei tanto avere il tempo d studiarmi queste cose, il problema quando c devi lavorare subito!

grazie

andrea.paiola
18-03-2009, 13:09
un'applicazione classica di Ajax... personalmente userei una qualsiasi libreria js ( di default rails usa prototype ) che esponga un api ajax attivata all'evento onchange

... e insomma non userei un plugin...

anche perch con ajax bisogna andarci cauti... quanti record deve estrarre?


di norma limito il numero di richieste ajax sia come numero di caratteri ( dal terzo in poi almeno ) che con un temporizzatore...

eventualmente puoi pensare di caricare tutti i record al caricamento della pagina e poi tramite js selezionarli... vedi tu: dipende da quanti record sono

Cool81
18-03-2009, 14:25
Nella combo potrebbero esserci presenti anche centinaia di nominativi.

Fermo rimanendo l'utilizzo di ajax (e ora m informo sulle librerie prototype), posso sostituire la combo con un textfield? E poi seguire i seguenti passi:

1. quando carico la pagina salvo i risultati della query al server da qualche parte, tipo un array.

2. associo ajax al digitazione sulla textfield che m va a prendere i risultati dall'oggetto dove li ho registrati.

3. Man mano che si digita vengono visualizzati i possibili risultati in una combo, dove eventualmente si pu selezionare il nominativo di interesse.

Ho detto qualche cavolata? :confused: :confused:

andrea.paiola
18-03-2009, 14:38
beh s hai scritto cavolate... se ti estrai al caricamento della pagina tutti i campi che ti interessano non ha pi senso usare ajax, usa "semplice" javascript per selezionare le stringhe che ti servono...

facendo cos almeno non hai una richiesta al server ogni volta che cerchi una nuova stringa, oltre ad evitare l'elaborazione lato server delle stringhe

Cool81
18-03-2009, 14:47
e lo sapevo che avrei detto cavolate...cmq, per capire, le cose allora diventano cos:

1. quando carico la pagina, salvo il risultato della query in un oggetto (un array andrebbe bene? altrimenti cosa dovrei usare?

2. con l'uso d javascript faccio la ricerca come la vorrei io (che ora cerco su internet come s fa, perch nn ne ho idea!).


Ora pi corretto? o dimenticato qualcosa?

grazie


:dh: :dh: :dh:

andrea.paiola
18-03-2009, 15:09
passi al javascript le stringhe... un array certo... poi devi fare il match con quanto scritto...

Cool81
18-03-2009, 15:38
Ok...a questo punto nn so se continuare qui o andare nel forum di javascript...
ma se io ho un metodo che facendo una query al server m restituisce un array...nn posso chiamare lo stesso metodo nella codice javascript no?



<script language="JavaScript" type="text/JavaScript">
<!--
var worker_list = new Array();
work_list = Worker.get_workers_collection_no_end_date;
.....

//-->
</script>


e poi faccio la ricerca su questo array sempre n javascript?

andrea.paiola
18-03-2009, 16:09
fai stampare in pagina a ruby il valore della variabile ( gli fai creare il codice javascript )...

Loading