【问题标题】:ValueChangeEvent fires in IE7 & IE8 only after 2nd clickValueChangeEvent 仅在第二次单击后在 IE7 和 IE8 中触发
【发布时间】:2013-12-12 13:35:25
【问题描述】:

这是来自 .xhtml 页面的代码:

<h:selectOneRadio valueChangeListener="#{searchModel.setSelectedSearchItem}" value="#{searchModel.selectedSearchItemName}" 
    layout="pageDirection">
        <f:selectItems value="#{searchModel.searchParametersNames}" var="item" itemValue="#{item}" />
        <f:ajax execute="@this" render="searchPane messagesPane" />
</h:selectOneRadio>

以及对应的方法签名:

public void setSelectedSearchItem(ValueChangeEvent event) {
    //do smth...
}

它在 Chrome、FF 和 IE9+ 中运行良好。 IE7 和 IE8 的问题是 ValueChangeEvent 不是在单击单选按钮后触发(第一次单击),而是在我再次单击页面上的其他位置(第二次单击)后触发。在 IE7 和 IE8 中第一次单击后我可以让 ValueChangeEvent 触发吗?

【问题讨论】:

  • 第一次点击前是否设置了值?
  • 没有。不要认为是这种情况 - 如果我选择一个选项(当然是第二次点击),那么它将有一个值,但仍然会在下一次点击时触发事件。
  • 尝试在启动时设置一个值并再次检查:它有效吗?
  • 不。 IE7 和 IE8 仍然只有在任意位置再单击一次后才会触发事件。

标签: jsf-2 internet-explorer-8 internet-explorer-7 myfaces


【解决方案1】:

解决了这个问题。已添加

onclick="this.blur()"

这里

<h:selectOneRadio valueChangeListener="#{searchModel.setSelectedSearchItem}" value="#{searchModel.selectedSearchItemName}" 
     layout="pageDirection" onclick="this.blur()">

现在在 IE7 和 IE8 中需要时触发事件!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多