我有一个GXT 3 TextArea,我可以在其上捕获复制粘贴事件。在这个事件中,我想得到textarea内的文本。
问题:textarea仍然具有焦点,因此值不会更新。因此,getValue()
返回一个空字符串...
我尝试拨打getValue()
getCurrentValue()
flush()
validate()
。
我还尝试扩展TextArea
以访问blur()
方法并在获取值之前调用它:它没有任何区别。
任何解决方案? (即使是GWT组件的解决方案也会受到赞赏)。
答案 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();