【问题标题】:CSJS doesn't update property that was set by SSJSCSJS 不更新由 SSJS 设置的属性
【发布时间】:2016-05-05 18:12:32
【问题描述】:

这是(是/否)单选按钮 onChange 事件 CSJS,它禁用/启用另一个“inputOtherRadio”单选按钮。而且效果很好:

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

但如果我设置 xPage 'inputOtherRadio' 组件 Disable 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 代码为禁用的组件工作?

【问题讨论】:

  • 纯解释,但它可能会帮助您或某人找出答案应该是什么。我怀疑是因为无线电组将disabled 属性设置为true,所以它最初是作为禁用传递给浏览器的。 CSJS 代码本身还在工作,但是 eventHandler 没有触发,因为组件被禁用,所以不应该是可点击的。

标签: javascript xpages


【解决方案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>

单选按钮控件被渲染到

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

【讨论】:

  • 在我的示例中确实有效。请检查呈现的输入标签的 ID,并确保您使用完全相同的语法来设置 inputYes,就像在我的代码中一样。
  • ... 并且代码必须在&lt;xp:this.script&gt;&lt;![CDATA[..........]]&gt;&lt;/xp:this.script&gt; 中,以便#{id:inputOtherRadio} 在为客户端呈现之前在服务器端被替换。
  • 复制了你的例子,它对我有用,没有任何改变。你在哪个版本?我的 Domino 服务器是 9.0.1 FP5
  • 啊..我忘了..现在是 8.5 :(
  • 酷.. 效果很好.. 非常感谢克努特
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
相关资源
最近更新 更多