2010-09-25 13 views
6

Sto cercando di capire come associare un evento javascript a un elemento selezionato in GWT, tuttavia l'elemento select non viene creato in GWT, ma viene dall'HTML che sto raschiando da un altro sito (un sito di report da un reparto diverso). Prima, un po 'più in dettaglio:Collegamento a elementi HTML in GWT

Sto usando GWT e al caricamento, faccio una chiamata ajax per ottenere dell'HTML che include, tra le altre cose, un rapporto che voglio mettere sulla mia pagina. Sono in grado di ottenere l'HTML e analizzare il div che mi interessa. È facile da visualizzare sulla mia pagina.

Ecco dove mi blocco: sulla parte della pagina che sto usando, c'è un elemento select che posso facilmente individuare (ha un id), ma vorrei catturare l'evento se il mio utente cambia quel valore (Voglio catturare le modifiche alla casella di selezione in modo da poter effettuare un'altra chiamata ajax per sostituire il rapporto, associare alla selezione su quella pagina e riavviare l'intero processo nuovamente.

Quindi, non sono sicuro di come, una volta ottenuto l'HTML da un sito remoto, come associare un gestore di eventi a un input su quel frammento e quindi inserire il frammento nel mio div target. Qualsiasi consiglio o suggerimento sarebbe molto apprezzato!

+0

Il componente di cui si parla è prodotto da Javascript? Se sì, è da qualche biblioteca speciale? – Guilherme

risposta

9

ne dite di questo:

Element domSelect = DOM.getElementById("selectId"); 
ListBox listBox = ListBox.wrap(domSelect); 
listBox.addChangeHandler(new ChangeHandler() { 
    void onChange(ChangeEvent event) { 
     // Some stuff, like checking the selected element 
     // via listBox.getSelectedIndex(), etc. 
    } 
}); 

Si dovrebbe ottenere l'idea generale - avvolgere l'elemento <select> in un ListBox. Da lì, si tratta semplicemente di aggiungere uno ChangeHandler tramite il metodo addChangeHandler.

+1

Invece di usare "new ListBox (domSelect)", il trucco è chiamare "ListBox.wrap (domSelect)". Funziona come un fascino! Grazie Igor! –