javascript - 使用 Javascript 启用/禁用 primefaces 的 SelectOneMenu

标签 javascript jsf-2 primefaces

我是 JSF 和 Primefaces 的新手。 我正在构建一个 xhtml 页面,其中有两个 primefaces 选择菜单。我想根据用户在第一个选择菜单中选择的值启用或禁用第二个选择菜单。 对于启用/禁用,我在页面中编写了 Java 脚本,因为我想在客户端执行此操作,但我不知道如何在 primefaces 组件中调用 java 脚本函数。

代码示例

        <h:head>
        <style type="text/css">
    .ui-widget,.ui-widget .ui-widget {
        font-size: 12px !important;
    }
    </style>
        <script>
            function disableOneMenu() {
                alert("In Disable One Menu Function...");
                var clickedGroup = document.getElementById('groupOneMenu').value;
                alert("Selected Value " + clickedGroup);
                if (clickedGroup == "Designation") {
                    document.getElementById('designation').disabled = true;
                    alert("Location One Menu Disabled...");
                } 
            }
        </script>
        <link type="text/css" rel="stylesheet"
            href="#{request.contextPath}/themes/redmond/skin.css" />
    </h:head>
    <h:body>
        <h:form>
            <p:layout fullPage="true">
                <p:layoutUnit position="north" size="30"
                    header="HCV : Peer Group Analysis" resizable="true">
                </p:layoutUnit>
                <p:layoutUnit id="contentLayout" position="west" size="200">
                    <h:panelGrid columns="2">
                        <h:outputText value="Analyse for values of attribute: " />
                        <p:selectOneMenu id="groupOneMenu" value="#{userInput.groupAttr}"
                            style="font-size:18;font-weight:bold;color:blue;width:100">
                            <f:selectItem itemLabel="Select One" itemValue="" />
                            <f:selectItems value="#{userInput.groupAttrList}" />
                            <p:ajax event="valueChange" actionListener="disableOneMenu" />
                        </p:selectOneMenu>
                        <h:outputText value="Designation: " />
                        <p:selectOneMenu id="designatinoOneMenu"
                            value="#{userInput.designation}"
                            style="font-size:18;font-weight:bold;color:blue;width:100">
                            <f:selectItem itemLabel="Select One" itemValue="" />
                            <f:selectItems value="#{userInput.designationList}" />
                        </p:selectOneMenu>
                       </h:panelGrid>
            </p:layoutUnit>
        </p:layout>
    </h:form>
</h:body>
</html>

请帮忙,我可以在 xhtml 页面中使用 java 脚本吗..

谢谢..

最佳答案

PrimeFaces 组件的 JavaScript API 大部分都有文档记录。 DOM 变量有 disable()enable() 方法。

您需要使用 widgetVar 属性为该变量命名:

<p:selectOneMenu id="myMenu" widgetVar="myMenuWidget" ... />

你可以用 JavaScript 调用:

myMenuWidget.disable();

widgetVar 必须与 ID 不同! IE 为 id 和全局 JS 变量使用相同的命名空间(与 FireFox 相反)。

关于javascript - 使用 Javascript 启用/禁用 primefaces 的 SelectOneMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16954224/

相关文章:

javascript - 同时在多个元素上使用 css 过渡

javascript - 解码奇怪的 JavaScript 代码

javascript - 超出最大深度但 setState 应该只调用一次

jsf-2 - JSF,复合组件 : method call with default attribute value as parameter

css - 在 p panelgrid 中显示 selectonemenu primefaces 时出现错误

Javascript:如何增量滚动浏览图片?

jsf - 更改复合组件的命名空间

java - p :commandLink action does not fire

file-upload - 如何使用 JSF/Primefaces 上传文件?

jsf - Primefaces 选择列表 'required' 验证失败