primefaces 3.2 - 无法自动聚焦下一个字段

时间:2012-08-06 03:46:26

标签: primefaces

我遇到了一个奇怪的问题,不确定它是不是一个bug。基本上,如果当前通过ajax更新下一个,焦点将跳过下一个。

要复制此问题,您可以使用以下bean:

public class TestBean implements Serializable {
   private BigDecimal a;
   private BigDecimal b;
   private BigDecimal c;
   //
   public TestBean() {
   }
   public BigDecimal getA() {
      return a;
   }
   public void setA(BigDecimal a) {
      this.a = a;
   }
   public BigDecimal getB() {
      return b;
   }
   public void setB(BigDecimal b) {
      this.b = b;
   }
   public BigDecimal getC() {
      return c;
   }
   public void setC(BigDecimal c) {
      this.c = c;
      this.calculate();
   }
   public void calculate() {
      if (a != null && b != null)
      c = a.multiply(b);
   }
}

以及下面的xhtml

 <p:inputText id="a" value="#{testBean.a}" style="text-align:right">
    <p:ajax event="blur" listener="#{testBean.calculate}" update="c d"/>
 </p:inputText>
 <p:inputText id="b" value="#{testBean.b}" style="text-align:right">
    <p:ajax event="blur" listener="#{testBean.calculate}" update="c d"/>
 </p:inputText>
 <p:inputText id="c" value="#{testBean.c}" style="text-align:right">
 </p:inputText>
 <p:inputText id="d" value="#{testBean.c}"/>
  1. 首先,我点击字段id =“a”,id =“a”将获得焦点,我将键入一些值。这里没问题。
  2. 然后我会按Tab键将光标移动到下一个字段,id =“b”,并键入一些值。这里没问题。
  3. 然后我再次按Tab键,期待光标移动下一个字段,id =“c”。但它不会发生。只更新字段id =“c”的值,焦点在某处丢失。虽然缺少焦点,但如果我再次按Tab键,焦点将移至id =“a”(或第一个字段)。
  4. 即使我不使用tab键并使用鼠标点击,如果我现在在id =“b”字段并点击id =“c”,焦点也会丢失。
  5. 如果我从字段id =“b”更新中删除“c”,使其更新=“d”,那么焦点将停留在字段id =“c”上,但问题是,它没有得到用计算值“c”更新。
  6. 总之,我相信我可以说如果当前字段运行ajax事件以通过update =“nextfield”更新下一个字段,那么,下一个字段无法通过tab键或下一个鼠标点击进行聚焦。第二次鼠标点击会将焦点带到下一个字段,但这很乏味。但是,我可以在紧接的下一个字段之后更新所有字段,并且仍然可以在下一个字段上正确地停留焦点。

    这是它应该的样子吗?在这种情况下如何将焦点实际带到下一个字段?

    (PrimeFaces 3.2)

1 个答案:

答案 0 :(得分:0)

update发生时,HTML会更新为cd,因此光标无法关注这些​​元素。 不确定是否要使用某些事件后JavaScript来设置焦点或仅接受此行为。