CSJS不会更新SSJS设置的属性

时间:2016-05-05 18:12:32

标签: javascript xpages

这是(是/否)单选按钮onChange事件CSJS,禁用/启用另一个< inputOtherRadio'单选按钮。它完美无缺:

rObj = dojo.query("[id$=':inputOtherRadio']");
if(thisEvent.target.value=="Y"){
    rObj.disabled = true;
} else {
    rObj.disabled = false;
}

但是,如果我设置xPage' inputOtherRadio'组件禁用property = 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代码适用于已禁用的组件?

1 个答案:

答案 0 :(得分:1)

将第一个单选按钮中的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>

单选按钮控件呈现为

enter image description here

正如您所见,已将disabled属性分配给输入元素&#34;是&#34;和&#34;不&#34;而不是整个单选按钮控制。这就是为什么你必须为每个选项设置禁用属性的原因。