events - GWT 文本框上的即时值更改处理程序

标签 events gwt textbox

我想在输入 GWT 文本框时立即更新文本字段。我的问题是 ValueChangeEvent 和 ChangeEvent 处理程序仅在 TextBox 失去焦点时触发。我想过使用 KeyPressEvent 但是当用鼠标执行复制粘贴时什么也不会发生。

最简单的方法是什么?

最佳答案

你可以 catch ONPASTE事件并手动触发 ValueChangeEvent .像这样的东西:

public void onModuleLoad() {
    final Label text = new Label();
    final ExtendedTextBox box = new ExtendedTextBox();
    box.addValueChangeHandler(new ValueChangeHandler<String>() {

        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            text.setText(event.getValue());
        }

    });
    box.addKeyUpHandler(new KeyUpHandler() {

        @Override
        public void onKeyUp(KeyUpEvent event) {
            text.setText(box.getText());
        }
    });

    RootPanel.get().add(box);
    RootPanel.get().add(text);
}

private class ExtendedTextBox extends TextBox {

    public ExtendedTextBox() {
        super();
        sinkEvents(Event.ONPASTE);
    }

    @Override
    public void onBrowserEvent(Event event) {
        super.onBrowserEvent(event);
        switch (DOM.eventGetType(event)) {
            case Event.ONPASTE:
                Scheduler.get().scheduleDeferred(new ScheduledCommand() {

                    @Override
                    public void execute() {
                        ValueChangeEvent.fire(ExtendedTextBox.this, getText());
                    }

                });
                break;
        }
    }
}

在 Firefox 3.6.1 上测试。

关于events - GWT 文本框上的即时值更改处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3184648/

相关文章:

javascript - 如何删除旧的主干 View

c# - 在 akka.net Actor 中安全地使用事件处理程序

java - 将属性传递给 GWT 服务器的最佳方式

java - 将文本框放在单独的行中

Windows7 上的 WPF 文本框边框

javascript - 在表单中动态添加数组文本框

c++11 信号系统

java - 使用 GWT 编译项目时出错

eclipse - 使用 TOMCAT 服务器在 Eclipse 中进行 GWT 开发

javascript - jQuery Toggle 不会通过滚动停止切换