1

我有一个 GXT 3 TextArea,我可以在上面捕捉复制粘贴事件。在这个事件中,我想获取文本区域内的文本。

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

我试着打电话getValue() getCurrentValue() flush() validate()

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

有什么解决办法吗?(即使使用 GWT 组件的解决方案也会受到赞赏)。

4

2 回答 2

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
    }
});
于 2013-07-15T18:36:04.707 回答
0

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

yourTextField.finishEditing();

在它之后方法getValue()应该返回字段的值。如果您想在获得值后保持该字段的焦点,您可以随时调用

yourTexField.focus();

于 2013-07-15T18:47:47.303 回答