2013-10-09 43 views
2

我試圖禁用Dojo組合框的客戶端驗證失敗。我添加了dojo屬性「required」並將其設置爲false,但這仍然無效。我確實希望啓用服務器端驗證,這就是爲什麼我設置required =「true」。任何人都可以看到需要對以下代碼進行哪些更改?XPage - 禁用Dojo組合框的客戶端驗證

<xe:djComboBox id="djComboBox1" required="true" disableClientSideValidation="true"> 
<xe:this.dojoAttributes> 
<xp:dojoAttribute name="required" value="false"> 
</xp:dojoAttribute> 
</xe:this.dojoAttributes> 
<xp:selectItem itemLabel="" /> 
<xp:selectItem itemLabel="Apples" /> 
<xp:selectItem itemLabel="Oranges" /> 
<xp:selectItem itemLabel="Pears" /> 
<xp:selectItem itemLabel="Bananas" /> 
<xp:selectItem itemLabel="Plums" /> 
</xe:djComboBox> 
+0

什麼是它綁定到? –

回答

5

嘗試重寫你的組合框的客戶端驗證配方,它總是返回的方法:

<xe:djComboBox 
    id="djComboBox1" 
    required="true" 
    validatorExt="return true;"> 
    <xp:selectItem itemLabel="" /> 
    <xp:selectItem itemLabel="Apples" /> 
    <xp:selectItem itemLabel="Oranges" /> 
    <xp:selectItem itemLabel="Pears" /> 
    <xp:selectItem itemLabel="Bananas" /> 
    <xp:selectItem itemLabel="Plums" /> 
</xe:djComboBox> 
+0

非常感謝。這是一個非常好的解決方案。客戶端驗證被禁用,但服務器端驗證繼續工作。 –

0

據我知道你不能禁用道場窗體控件的客戶端驗證。 Dojo是一個客戶端框架,並且這些控件使得更容易實現Dojo版本。驗證是Dojo客戶端JavaScript代碼的一部分,而不是來自XPage服務器端運行時的任何內容。所以驗證的目的是運行客戶端而不是服務器端。

標準組合框控件會給你你想要的。您可以通過識別相關樣式來重現Dojo版本的樣式。螢火。

另一種選擇是在保存按鈕中進行驗證。有一個XSnippet可以幫助將控件標記爲無效併發布到xp:messages或xp:消息控件http://openntf.org/XSnippets.nsf/snippet.xsp?id=ssjs-form-validation-that-triggers-errormessage-controls。但是這不會給Dojo錯誤樣式,這又是Dojo代碼的一部分,而不是專門作爲XPage運行時的一部分。

+0

如果將Dojo表單控件的* required *屬性設置爲* false *,則客戶端驗證將被禁用。 –

+0

我沒有設置所需的屬性爲false,因爲你可以看到上面但沒有達到預期的結果。 –

+0

@TonyGuiheen:不需要。在上面的代碼* required *中設置爲* true *,而不是* false *。 –