在我的GWT项目中,我有一个Element desc
,用TextArea
表示。我需要在用户点击它时选择所有文本。当用户单击元素时,JNI函数selectAll()
被正确执行。但是,它不会选择文本。请帮忙!
final Element desc = StoryView.getInstance().getDescription();
DOM.sinkEvents((com.google.gwt.user.client.Element) desc, Event.ONCLICK);
DOM.setEventListener((com.google.gwt.user.client.Element) desc, new EventListener(){
@Override
public void onBrowserEvent(Event e) {
switch (DOM.eventGetType(e)) {
case Event.ONCLICK:
selectAll();
break;
}
}
});
}
private native void selectAll() /*-{
var desc = @com.gw.myproj.client.story.StoryView::DESC;
$wnd.$("." + desc).focus();
$wnd.$("." + desc).select();
}-*/;
答案 0 :(得分:1)
只需在JSNI中使用JavaScript的setSelectionRange方法。
private native void selectAll(Element element) /*-{
element.setSelectionRange(0, element.value.length);
}-*/;
final Element desc = Document.get().createTextInputElement();
DOM.sinkEvents((com.google.gwt.user.client.Element) desc, Event.ONCLICK);
DOM.setEventListener((com.google.gwt.user.client.Element) desc, new EventListener() {
@Override
public void onBrowserEvent(Event e) {
switch (DOM.eventGetType(e)) {
case Event.ONCLICK:
selectAll(desc);
break;
}
}
});
注意:无需致电focus
,因为当您点击它时,它会自动聚焦。