2014-10-05 22 views
0

下面是非常簡化的XPage的源代碼。它有一個帶有兩個選項的單選按鈕組和一個根據所選值設置viewScope.vsCompanies的onchange事件。然後有一個叫做Title的字段,我已經制作了Required。如果我單擊單選按鈕,它將從合同變爲租賃並返回,但是onchange事件從不會觸發。相反,我得到一個警告,標題是必需的。我只想要在提交文檔時觸發驗證,以便onchange正常工作。我是否必須在提交被按下時進行每個驗證條件,這似乎是很多額外的工作。當提交按鈕被按下時,我可以設置一個viewScope,並且只有當viewScope爲true時才需要它。如果存在字段級別驗證,onChange事件不會觸發

我現在不添加代碼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> 
+1

下面有您的文章沒有源。 – 2014-10-05 18:51:25

回答

3

我相信,如果你去,你可以禁用驗證該事件的事件。

我在這裏發現了一個重複的問題。 xpages validation on field having onChange script

貌似事件處理程序有以下參數 disableValidators =「真」

+0

看起來它會這樣做,謝謝,我知道必須有一個簡單的答案,只是沒有看到該屬性。 – 2014-10-06 17:57:33

+0

看着你提供的鏈接和其中的建議。我看到的問題是,標題字段與單選按鈕和conbo框都沒有關係。選擇合同或租賃價值填充組合。我已經嘗試過各種禁用驗證,但它們要麼完全禁用驗證,要麼根本不驗證。本機註釋我通常在querySave事件中執行所有的驗證,因爲驗證不夠精細。也許,這也是這裏的方式。 – 2014-10-06 18:32:34