TextBox上的GWT输入事件

时间:2013-10-05 18:19:04

标签: gwt

给出以下代码:

    TextBox tb = new TextBox();
    tb.addValueChangeHandler(new ValueChangeHandler<String>() {

        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            Window.alert(event.getValue());

        }
    });
如果onValueChange失去焦点,将会调用

TextBox。我试图在输入值改变时调用它。我读过的解决方案都涉及处理keyup和粘贴事件,例如在这个答案中。 How to build a Facebook-style input box in GWT这不是GWT 2.5.1中的地址吗?有没有办法绑定到本机输入更改方法?如果具有此功能,则可以接受另一个小部件或使用UI框架

4 个答案:

答案 0 :(得分:3)

GWT中唯一的方法是绑定密钥/密钥并粘贴事件。

请发送补丁以添加对输入事件的支持(使用addBitlessDomHandler):http://www.gwtproject.org/makinggwtbetter.html,它应该相当简单(在case中添加DOMImpl)和有很好的机会进入(如果发送得足够早,将有很好的机会在GWT 2.6中发货)

答案 1 :(得分:1)

解决方案是使用正确的事件,即input事件,因此,请看如何挂钩它,有很多方法可以执行。因为我使用的是元素而不是Widget,所以我使用它的代码是

    Element input = Document.get().getElementById("my-input");
    DOM.sinkBitlessEvent(input, "input");
    DOM.setEventListener(input, event -> GWT.log("Event!"));

答案 2 :(得分:0)

您可以使用addChangeHandler()和onChange,tb.getValue()

答案 3 :(得分:0)

我使用以下内容来检测文本框的值何时更改。请记住,这只会检测文本框是从空白变为满或从满到空。这样做是为了尝试减少对服务器的异步调用以验证输入

@UiHandler("notes")
    @SuppressWarnings("unused")
    public void notes(KeyUpEvent event) {
        if (!areNotesCaptured && !notes.getText().isEmpty()){
            fireLeaveSelectionUpdatedEvent();
            areNotesCaptured = true;
        } else if (areNotesCaptured && notes.getText().isEmpty()){
           fireLeaveSelectionUpdatedEvent();
            areNotesCaptured = false;
        }
    }