2010-09-25 4 views
6

Ich versuche herauszufinden, wie man ein JavaScript-Ereignis an ein select-Element in GWT bindet, aber das select-Element wird nicht in GWT erstellt, sondern kommt von HTML, die ich scrapping von einer anderen Site (eine Report-Site von einer anderen Abteilung). Zuerst ein bisschen mehr Details:Bindung an HTML-Elemente in GWT

Ich benutze GWT und beim Laden mache ich einen Ajax Aufruf, um etwas HTML zu bekommen, das unter anderem einen Bericht enthält, den ich auf meine Seite legen möchte. Ich bin in der Lage, das HTML zu erhalten und das div herauszuziehen, das mich interessiert. Das ist einfach auf meiner Seite anzuzeigen.

Hier ist, wo ich stecken bleiben: Auf dem Teil der Seite, die ich benutze, gibt es ein Select-Element, das ich leicht finden kann (es hat eine ID), aber möchte Ereignis erfassen, wenn mein Benutzer diesen Wert ändert (Ich möchte Änderungen an der Auswahlbox erfassen, damit ich einen weiteren Ajax-Anruf machen kann, um den Bericht zu ersetzen, an die Auswahl auf dieser Seite zu binden und den gesamten Vorgang erneut zu starten).

Also, ich bin nicht sicher, wie, sobald ich den HTML-Code von einer Remote-Site, wie ein Event-Handler an eine Eingabe auf diesem Fragment zu binden, und fügen Sie das Fragment in meine Ziel-Div. Irgendwelche Ratschläge oder Hinweise würden sehr geschätzt werden!

+0

Die Komponente, von der Sie sprechen, besteht aus Javascript? Wenn ja, kommt es von einer speziellen Bibliothek? – Guilherme

Antwort

9

Wie wäre es damit:

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. 
    } 
}); 

Sie sollten die allgemeine Idee - wickeln Sie das <select> Element in einem ListBox. Von dort ist es nur eine Frage von ChangeHandler über die addChangeHandler Methode hinzufügen.

+1

Anstatt "neue ListBox (domSelect)" zu verwenden, ist der Trick, "ListBox.wrap (domSelect)" aufzurufen. Klappt wunderbar! Danke Igor! –