Una select HTML a scomparsa con jQuery

L'elemento select e uno dei componenti HTML piu longevi. Questo elemento e tuttora considerato uno standard, com'era sin nelle prime versioni di HTML. Data l'anzianita del componente, nelle moderne interfacce Web la presenza di una vecchia select rischia di far apparire sorpassata l'interfaccia stessa. Cio nonostante l'utilita della select resta indiscussa: ogni volta che vogliamo far scegliere ad un utente un elemento all'interno di un elenco possiamo utilizzare una select.

Sincronizzazione

Sincronizzazione

Il codice di pagina precedente è completo dal punto di vista di gestione dell’interfaccia. Tutto dovrebbe funzionare come previsto: quando l’utente si sposta su un campo che prevede una select jQuery si occupa di far apparire la select stessa. Non appena l’utente lascia tale campo la select scompare, facendo apparire al suo posto il campo normale. Tutto questo riguarda però solo l’interfaccia, ovvero manca il codice che si occupa di sincronizzare il valore della select con quello mostrato dal campo ordinario. Questo codice non è sempre necessario, ma dipende da quello che dobbiamo fare con la form HTML. Se prevediamo l’invio della form attraverso un metodo standard del tipo HTTP POST, potremmo aver bisogno di valorizzare l’opzione scelta dall’utente. Per garantire la sincronizzazione tra i due campi accoppiati (select e input) possiamo usare un codice come questo

Il codice viene invocato tutte le volte che l’utente cambia il valore della select corrente (evento change). Vediamo un esempio: se la select contenesse dieci opzioni possibili e l’utente scegliesse l’opzione numero 7, l’istruzione $(this).val() ritornerebbe proprio il valore 7. Ciò significa che la variabile option assumerebbe il valore

Conseguentemente l’istruzione successiva risulterebbe questa

Che sfrutta il selettore dell’attributo per individuare l’opzione scelta dall’utente, leggerne il contenuto e assegnarla alla variabile value. Con questo stratagemma il valore impostato nella select, risulta sempre sincronizzato a quello del campo di tipo input.

Mettendo tutto assieme abbiamo un sistema che permette di utilizzare le select in maniera moderna e flessibile, preservando la struttura HTML. L’unica accortezza è quella di fare attenzione all’ordine col quale specifichiamo i componenti HTML. In questo caso abbiamo inserito prima l’elemento select e poi il campo di tipo input. Qualsiasi sia l’ordine da noi scelto è importante rispettarlo, perché gli snippet utilizzano le istruzioni prev e next per identificare i componenti HTML. Ad esempio, se volessimo invertire l’ordine della select rispetto al campo di input, dovremmo anche invertire tutte le istruzioni prev con un next, e viceversa.