Gwt GXT在没有焦点丢失的情况下获取TextArea的值
我有一个GXT 3文本区域,可以在其中捕获复制粘贴事件。在这个事件中,我想获取文本区域内的文本 问题:文本区域仍有焦点,因此值不会更新。因此,Gwt GXT在没有焦点丢失的情况下获取TextArea的值,gwt,gxt,Gwt,Gxt,我有一个GXT 3文本区域,可以在其中捕获复制粘贴事件。在这个事件中,我想获取文本区域内的文本 问题:文本区域仍有焦点,因此值不会更新。因此,getValue()返回一个空字符串 我试图调用getValue()getCurrentValue()flush()validate() 我还尝试扩展TextArea以访问blur()方法,并在获取值之前调用它:这没有什么区别 有解决办法吗?(即使是使用GWT组件的解决方案也会受到欢迎)。如果看不到您的代码,很难确定。但您可以猜测,您正在侦听该事件,并立即
getValue()
返回一个空字符串
我试图调用getValue()
getCurrentValue()
flush()
validate()
我还尝试扩展TextArea
以访问blur()
方法,并在获取值之前调用它:这没有什么区别
有解决办法吗?(即使是使用GWT组件的解决方案也会受到欢迎)。如果看不到您的代码,很难确定。但您可以猜测,您正在侦听该事件,并立即调用
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
}
});
在获取您可以调用的值之前 yourTextField.finishEditing() 之后,方法
getValue()
应返回字段的值。如果您希望在获得值后保持此字段的焦点,则可以随时调用
yourTexField.focus()
您至少需要做额外的工作才能保持光标的位置。还要记住,
getCurrentValue()
将返回正确的值,即使仍然模糊。