以下是非常简化的XPage的来源。它有一个带有两个选项的单选按钮组和一个onchange事件,它根据所选的值设置viewScope.vsCompanies。然后有一个名为Title的字段,我已经制作了必需的字段。如果我点击单选按钮,它会从Contract更改为Lease并返回,但onchange事件永远不会触发。相反,我得到一个警告,标题是必需的。我只希望在提交文档时触发验证,以便onchange正常工作。我是否必须使每一个验证都以提交被按下为条件,这似乎是很多额外的工作。我可以在按下提交按钮时设置viewScope,只有在viewScope为true时才需要它。
很抱歉错过了添加代码ps clientsideValidation被禁用
<xp:this.data>
<xp:dominoDocument var="CLDoc"
databaseName="Client Apps\LGI\XPages\LGIContracts-Leases.nsf"
formName="frmCL">
</xp:dominoDocument>
</xp:this.data>
<xp:this.properties>
<xp:parameter name="xsp.client.validation" value="false" />
</xp:this.properties>
<xp:br></xp:br>
<xp:messages id="messages1"></xp:messages>
<xp:radioGroup id="radioGroup1" value="#{CLDoc.Type}">
<xp:selectItem itemLabel="Contract"></xp:selectItem>
<xp:selectItem itemLabel="Lease"></xp:selectItem>
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="comboBox1">
<xp:this.action><![CDATA[#{javascript:if (CLDoc.getValue("Type") == "Contract"){
viewScope.vsCompanies = ["A","B","C"];
return;
break;
}else{
viewScope.vsCompanies = ["X","Y","Z"];
return;
break;
}}]]></xp:this.action>
</xp:eventHandler>
</xp:radioGroup>
Company
<xp:br></xp:br>
<xp:comboBox id="comboBox1" value="#{CLDoc.Company}">
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:viewScope.vsCompanies}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox>
<xp:br></xp:br>
Title
<xp:br></xp:br>
<xp:inputText id="inputText1" style="width:392.0px" value="#{CLDoc.Title}"
required="true">
<xp:this.validators>
<xp:validateRequired message="Title is required"></xp:validateRequired>
</xp:this.validators>
</xp:inputText>
答案 0 :(得分:3)
我相信如果您参加活动,您可以禁用该活动的验证工具。
[编辑]
我在这里发现了一个重复的问题。 xpages validation on field having onChange script
看起来事件处理程序具有以下参数 disableValidators = “真”