Primefaces blockUI不适用于selectOneRadio?

时间:2014-02-27 11:13:32

标签: java javascript jsf primefaces

点击Yes后,fieldset被屏蔽了 但是,当我点击No时,为什么fieldset被解除阻止?我缺少什么?

<h:form id="blockUITest">
    <p:selectOneRadio style="width:130px;" onchange="blockUI(this.value);">
        <f:selectItem itemLabel="Yes" itemValue="true" />  
        <f:selectItem itemLabel="No" itemValue="false" />
    </p:selectOneRadio>
    <script type="text/javascript">
        function blockUI(block) {
            if(block) {
                dataEntryBlockUI.show();
            } else {
                dataEntryBlockUI.hide();
            }
        }
    </script>
    <p:blockUI block="dataEntry" widgetVar="dataEntryBlockUI"/>
    <p:fieldset legend="Data Entry" id="dataEntry">
    </p:fieldset>               
</h:form>

2 个答案:

答案 0 :(得分:1)

itemValue是字符串,它不是实际的布尔值,因此,如果在if条件中使用它,则它将始终为true,因为true和false均为非空字符串。 试试这个:

<h:form id="blockUITest">
    <p:selectOneRadio style="width:130px;" onchange="blockUI(this.value);">
        <f:selectItem itemLabel="Yes" itemValue="true" />  
        <f:selectItem itemLabel="No" itemValue="false" />
    </p:selectOneRadio>
    <script type="text/javascript">
        function blockUI(block) {
            if(block==='true') {
                dataEntryBlockUI.show();
            } else {
                dataEntryBlockUI.hide();
            }
        }
    </script>
    <p:blockUI block="dataEntry" widgetVar="dataEntryBlockUI"/>
    <p:fieldset legend="Data Entry" id="dataEntry">
    </p:fieldset>               
</h:form>

还有另一种使用hide()和show()函数的方法。 您可以使用jQuery选择blockUI元素,然后调用这些函数。但是首先,您必须找到blockUI元素的实际ID。

$('#actualID').hide()

答案 1 :(得分:0)

我得到一个解决方案,javascript通过p:selectOneRadio检索id的元素。之后检查选择了哪个收音机。这对我有用。

    <h:form id="blockUITest">
        <p:selectOneRadio style="width:130px;" onchange="blockUI();" id="xxx">
            <f:selectItem itemLabel="Yes" itemValue="true" />  
            <f:selectItem itemLabel="No" itemValue="false" />
        </p:selectOneRadio>
        <script type="text/javascript">
            function blockUI() {
                var element1 = document.getElementById('blockUITest:xxx:0');
                if(element1.checked) {
                    dataEntryBlockUI.show();
                }
                var element2 = document.getElementById('blockUITest:xxx:1');
                if(element2.checked){
                    dataEntryBlockUI.hide();
                }
            }
        </script>
        <p:blockUI block="dataEntry" widgetVar="dataEntryBlockUI"/>
        <p:fieldset legend="Data Entry" id="dataEntry">
        </p:fieldset>               
    </h:form>