这是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>

单选按钮控件将呈现为

javascript - CSJS不会更新SSJS设置的属性-LMLPHP

如您所见,disabled属性分配给输入元素"is"和“否”,而不是整个单选按钮控件。这就是为什么您必须为每个选项设置禁用属性。

08-07 18:50