这是onChange事件CSJS的(是/否)单选按钮,用于禁用/启用另一个“inputOtherRadio”单选按钮。它完美地工作:
rObj = dojo.query("[id$=':inputOtherRadio']");
if(thisEvent.target.value=="Y"){
rObj.disabled = true;
} else {
rObj.disabled = false;
}
但是,如果我将xPage'inputOtherRadio'组件设置为Disable属性= true,则上面的代码将不起作用(它不会不起作用...)
<xp:radioGroup id="inputOtherRadio" disabled="true">
<xp:selectItem itemLabel="Yes" itemValue="Y" id="selectItem11"></xp:selectItem>
<xp:selectItem itemLabel="No" itemValue="N" id="selectItem12"></xp:selectItem>
</xp:radioGroup>
如何使CSJS代码适用于禁用组件?
最佳答案
将第一个单选按钮中的CSJS代码更改为
<xp:radioGroup id="mainRadio" defaultValue="N">
<xp:selectItem itemLabel="Yes" itemValue="Y"></xp:selectItem>
<xp:selectItem itemLabel="No" itemValue="N"></xp:selectItem>
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[return false;]]></xp:this.script>
</xp:eventHandler>
<xp:eventHandler event="onchange" submit="false">
<xp:this.script><![CDATA[
options = dojo.query("[name$=inputOtherRadio]");
for(i=0; i < options.length; i++) {
if(thisEvent.target.value=="N"){
options[i].disabled = true;
} else {
options[i].disabled = false;
}
}
]]></xp:this.script>
</xp:eventHandler>
</xp:radioGroup>
单选按钮控件将呈现为
如您所见,disabled属性分配给输入元素"is"和“否”,而不是整个单选按钮控件。这就是为什么您必须为每个选项设置禁用属性。