我没有使用checkboxgroup,因为在我的实际应用程序中,重复控件中还有其他控件。以下是我的示例来源:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:repeat id="repeat1" rows="30" var="curRow" indexVar="rowIndex"><xp:this.value><![CDATA[#{javascript:['option 1', 'option 2', 'option 3']}]]></xp:this.value>
<xp:table>
<xp:tr>
<xp:td>
<xp:checkBox text="#{javascript:curRow}"
id="checkBox1">
<xp:eventHandler event="onchange" submit="true"
refreshMode="complete">
</xp:eventHandler></xp:checkBox>
</xp:td>
</xp:tr>
</xp:table></xp:repeat>
<xp:button id="button1" value="Submit" disabled="#{javascript:!getComponent('checkBox1').isChecked()}"></xp:button>
</xp:view>
如果在CSJS中可以实现这一点会更好。
修改
@stwissel
我默认禁用了该按钮,并在复选框的客户端onchange事件中,我输入以下代码:
var a=dojo.query('input:checked', 'view:_id1').length;
if(a!=3){
alert('Not yet!');
document.getElementById("#{id:button1}").removeAttribute("disabled");
}else{
alert('Done! All checkboxes are checked!');
document.getElementById("#{id:button1}").setAttribute("disabled", true);
}
如果我使用它们,那些警报似乎工作正常。但该按钮仍然被禁用。我启用了XPage的所有3个Dojo选项。将onchange设置为部分刷新按钮也没有做任何事情。我错过了什么?
答案 0 :(得分:1)
在CSJS中解决这个问题,每次单击复选框时往返都不是很有效。这里的诀窍是:给复选框一个类,这样你就可以使用dojo.query来处理所有这些,然后循环它们。在第一次假你回来。如果您没有返回,则重置禁用的值。 应该比往返更快