2013-02-15 77 views
0

让我们来谈谈GXT v3字段。GXT字段值更新onblur

有两种帧& B.

框架A有一组字段和一个提交按钮SA。提交按钮读取帧A中的字段。 帧B只有一个提交按钮SB,它读取帧A中的字段。

执行以下步骤。

  1. 在帧A上的区域框架中的一个将数据输入场F1
  2. 点击或点击提交框架A.
  3. 调试在F1 getCell(按钮)将表明,它有一个值。

执行以下备用步骤。

  1. 在帧A.在帧B.将数据输入场F1
  2. 点击按钮
  3. 调试在F1 getCell()将显示它不具有价值。

这对我来说是有问题的。因此,我想知道点击按钮SA和按钮SB之间帧A中字段的onblur动作的区别。

当单击框架A时,Field F1的onblur会执行什么操作,点击框架B时Field F1的onblur不会执行?

如果我知道这种差异,那么我将能够执行这种差异。

+1

当你说'框架',你的意思是GWT小部件框架(即iframe)?如果是这样,您可能会遇到浏览器自身的跨框架焦点问题 - 可能值得验证的是,通过关注另一个框架中的某些内容,可以解决常规的DOM更改或模糊事件。 GXT字段(至少是基于''的字段)将这些事件关闭以清除用户的值 - 如果浏览器尚未告知JS,它不能告诉你。最后一个想法是:有些字段支持'getCurrentValue()'直接读取和解析dom中的数据 - 可能值得一试。 – 2013-02-15 05:47:12

回答

0

该解决方案很简单。

冲洗字段值之前只需选择在框架A.

public void focusA(){ 
    frameA.getField1().focus(); 
    frameA.getField2().focus(); 
    frameA.focus(); 
} 

帧B中的按钮单击处理程序应该调用focusA()的任何两个字段。

什么focusA()的作用是

  • 专注于其他领域将触发从DOM更新字段编辑器价值的,除现场被聚焦。
  • 在这种情况下,触发另一个随机字段触发第一个字段的更新。
  • 然后通过关注容器来防止焦点粘在最后一个焦点区域(以防止用户无意中编辑区域)。