首页 > 解决方案 > 如何防止 primefaces ajax 调用禁用我的脚本

问题描述

我的 Js 代码onclick在 a 内的组件类上设置了一个selectOneMenu,每当我<p:ajax>在 selectOneMenu 中使用时,脚本只运行一次。如何防止?

<p:selectOneMenu id="GaStructNode_listForm_GaStruct"
        value="#{gaStructNodeController.selectedGaStruct}"
        style="margin-bottom: 10px;">
    <f:selectItem itemLabel="#{bundle.defautlItem}"/>
    <f:selectItems value="#{gaStructNodeController.findAllGaStructs()}" var="gs"
        itemLabel="#{gs.name}" itemValue="#{gs}"/>
    <p:ajax event="itemSelect" update="@form :GaStructNode_listForm :GaStructNode_editForm :GaStructNode_picklist_form"/>
</p:selectOneMenu>


<script type="text/javascript">
    $('.ui-selectonemenu-item-group').click(function () {
        alert("Handler for .click() called.");
    });
</script>

标签: javaajaxjsfprimefaces

解决方案


将您的脚本放在一个函数中,并从 oncomplete 中调用它p:ajax

<script type="text/javascript">
    $('.ui-selectonemenu-item-group').click(function () {
        alert("Handler for .click() called.");
    });

    function m() {
        $('.ui-selectonemenu-item-group').click(function () {
            alert("Handler for .click() called.");
        });
    }
</script>

并更改您的ajax:

<p:ajax oncomplete="m()" event="itemSelect" update="@form :GaStructNode_listForm :GaStructNode_editForm :GaStructNode_picklist_form"/>

推荐阅读