GXT获得TextArea的值而没有焦点丢失

时间:2013-07-15 17:45:47

标签: gwt gxt

我有一个GXT 3 TextArea,我可以在其上捕获复制粘贴事件。在这个事件中,我想得到textarea内的文本。

问题:textarea仍然具有焦点,因此值不会更新。因此,getValue()返回一个空字符串...

我尝试拨打getValue() getCurrentValue() flush() validate()

我还尝试扩展TextArea以访问blur()方法并在获取值之前调用它:它没有任何区别。

任何解决方案? (即使是GWT组件的解决方案也会受到赞赏)。

2 个答案:

答案 0 :(得分:2)

如果没有看到你的代码,很难肯定地说。但是猜测一下,你正在听这个事件,并立即调用getCurrentValue()(在这种情况下是正确的调用)。

这是错误的 - 事件处理程序可以调用preventDefault(),以取消可能发生的大多数事件的该事件的默认行为。事件处理程序返回后,浏览器才会实际执行操作(粘贴或绘制已按下的键)。对此的解决方案是在尝试阅读之前等待片刻,等待操作完成后再等待。实现此目的的最简单方法是在事件发生后安排延迟命令,然后读取字段的值。

//in the event handler of your choice...
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    @Override
    public void execute() {
        String pastedValue = field.getCurrentValue();
        //do something with the value now
    }
});

答案 1 :(得分:0)

在获得价值之前,您可以致电

  

yourTextField.finishEditing();

之后方法getValue()应该返回字段的值。如果您希望在获得价值后继续关注此字段,您可以随时致电

  

yourTexField.focus();