1

问题如下:我需要通过 facet 在 Primefaces p:tab 标题中放置复选框,但是当我单击复选框时,我不想打开选项卡。

这是一个代码片段。

<p:accordionPanel multiple="true" activeIndex="">               
    <p:tab rendered="#{condition}">
        <f:facet name="title">
            <div>
                <h:selectBooleanCheckbox styleClass="simple-checkbox" value="#{someValue}" >
                    <p:ajax event="click" process="@this"
                            action="#{some action}"
                            update="some elements" global="false" />
                </h:selectBooleanCheckbox>
                <h:outputText value="some text" />
            </div>
        </f:facet>
        Tab Body
    </p:tab>
</p:accordionPanel>     
4

2 回答 2

0

由于事件被传递给他们的父母。有一种方法可以通过将其添加到您的视图来防止使用 jQuery:

<script>
    $(document).ready(
        function()
        {
            $(".ui-accordion-header .simple-checkbox").click(function(e)
            {
                e.stopPropagation();
            });
        }
    );
</script>

注意:我已添加.ui-accordion-header到选择器以防止将其应用于所有复选框。

更多信息 :

于 2013-06-03T09:20:51.743 回答
0

您可以添加event.stopPropagation();onclick您的<h:selectBooleanCheckbox

像这样

<h:selectBooleanCheckbox onclick="event.stopPropagation();"...

另外你最好不要嵌套p:ajax在 JSF 原生组件中,反之亦然......

f:ajax旨在与本机 JSF 组件一起使用

p:ajax旨在与 PrimeFaces 组件一起使用

可以在一页中同时拥有 Primefaces 组件和 JSF 原生组件,只要确保p:ajax在 Primefaces 组件和f:ajaxJSF 原生组件中使用即可

于 2013-06-03T09:26:10.547 回答