点击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>
答案 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>