首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Primefaces selectOneRadio ajax

Primefaces selectOneRadio ajax
EN

Stack Overflow用户
提问于 2012-11-05 01:36:08
回答 1查看 56.6K关注 0票数 18

我尝试在用户每次单击单选按钮时显示验证消息。

这只在我单击submit按钮时有效,但在我单击单选按钮时无效:

代码语言:javascript
复制
    <h:form id="form">
        <p:panel id="panel">
            <ui:repeat value="#{questionsBean}" var="question">
                <h:panelGrid columns="3" style="margin-bottom:10px" cellpadding="5">
                    <h:outputText value="#{question.questionText}" />
                    <p:selectOneRadio id="question" value="#{question.response}"
                        validator="#{question.validate}" required="true">
                        <f:selectItem itemLabel="Yes" itemValue="Yes" />
                        <f:selectItem itemLabel="No" itemValue="No" />
                        <p:ajax update="msgQuestion" event="change"/>
                    </p:selectOneRadio>
                    <p:message for="question" id="msgQuestion" />
                </h:panelGrid>
            </ui:repeat>
            <p:commandButton id="btn" value="Save" update="panel" partialSubmit="true"/>
        </p:panel>
    </h:form>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-05 08:36:16

当您想要监听单选按钮(或复选框)是否被单击时,HTML DOM change事件是错误的事件。为此,您应该使用click事件。

单选按钮(和复选框)的值基本上不会改变。它始终具有相同的值。问题更多的是这个值是否会被发送到服务器端。这是由"checked“状态确定的,该状态通常由DOM click事件触发。

单选按钮/复选框上change事件的实际行为取决于所使用的used浏览器。IE浏览器中的行为特别不一致。它不仅取决于使用的版本,而且还取决于使用的渲染模式(quirks模式与标准模式)。也许你在测试时真的在使用IE。

PrimeFaces <p:ajax> (和标准的JSF <f:ajax>)的默认event类型已经是valueChange,它会自动覆盖以下内容:

代码语言:javascript
复制
<p:ajax update="msgQuestion" event="valueChange" />

这将在文本输入和下拉列表中自动生成正确的change事件处理程序,并在单选按钮和复选框中自动生成click事件处理程序。

但如前所述,它已经是默认的event类型了。完全省略它。

代码语言:javascript
复制
<p:ajax update="msgQuestion" />
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13221089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档