TextField'更改'事件仅在模糊时触发

时间:2011-05-06 19:15:33

标签: java gwt gxt

通常,在TextField失去焦点(模糊)后会触发Change事件。

但是我需要它在字段的值发生变化时立即触发,而不需要失去对该字段的关注。

KeyListener不会剪切它,因为该值可能来自条形码扫描仪。

有没有办法实现这个目标?

提前致谢!

2 个答案:

答案 0 :(得分:1)

我没有使用ext-gwt,但这是你必须要做的:你必须使用KeyListener并为ONPASTE添加一个监听器。 “更改”事件由浏览器提供,仅在焦点消失(模糊期间)以及文本已更改时触发。

答案 1 :(得分:0)

我认为没有一个事件适用于所有情况的跨浏览器。因此,“穷人的解决方案”是每隔一秒左右轮询文本字段。事实上,这样的测试可以很快完成,如果你不在同一时间在很多文本字段中使用它,你应该没问题。

如果你愿意,你可以使用我的小例子代码(它适用于普通的GWT TextBox,但它应该很容易适应Ext-GWT TextField)

@Override
public void onModuleLoad() {

    final TextBox textBox = new TextBox();
    final int delayMilliseconds = 1000;

    Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {

        private String previousValue = "";

        @Override
        public boolean execute() {

            final String newValue = textBox.getValue();
            if (!previousValue.equals(newValue)) {
                try {
                    valueChanged();
                } finally {
                    previousValue = newValue;
                }
            }
            return true;
        }

        private void valueChanged() {
            // React on the change
            Window.alert("Value changed");
        }

    }, delayMilliseconds);

    RootPanel.get().add(textBox);
}