2014-11-05 82 views
1

有什麼辦法來驗證富文本我添加了一個validateExpression但是不起作用。Xpages富文本驗證

感謝

<xp:inputRichText 
     value="#{document1.Request}" id="inputRichText1" style="width:99.0%"> 
    <xp:this.validators> 
    <xp:validateExpression 
      message="Attachment is missing"> 
    <xp:this.expression><![CDATA[#{javascript: if(getComponent("inputRichText1").getSubmittedValue()!== ''){ 
      return true 
      }}]]></xp:this.expression> 
</xp:validateExpression> 
</xp:this.validators></xp:inputRichText> 

回答

5

此外還需要validatorRequired,但本身無法提供幫助。

如果用戶點擊到富文本字段,不輸入任何東西,然後它的內容被設定爲

<p dir="ltr"> 
    &nbsp;</p> 

和測試空值不工作了。

所以,我們必須在測試「」之前用replace()來消除這個。

<xp:messages 
    id="messages1" /> 
<xp:inputRichText 
    value="#{document1.Request}" 
    id="inputRichText1" 
    style="width:99.0%" 
    disableClientSideValidation="true"> 
    <xp:this.validators> 
     <xp:validateExpression message="Attachment is missing"> 
      <xp:this.expression><![CDATA[#{javascript: 
       var text = (value + " ").replace(/(<((?!img|a\s)[^>]+)>)|&nbsp;/ig, "").trim();        
       return text !== ""; 
      }]]></xp:this.expression> 
     </xp:validateExpression> 
     <xp:validateRequired 
      message="Attachment is missing" /> 
    </xp:this.validators> 
</xp:inputRichText> 

正則表達式消除了所有的HTML標籤<...>&nbsp;除了圖像標記<img...>和鏈接標籤<a...>

+0

Hermann中的整個應用程序禁用該屬性,因爲我有七個必填項,所以我要在頁面頂部顯示錯誤消息列表字段以這種形式顯示錯誤消息,作爲頁面頂部的列表 – Maryam 2014-11-06 20:55:31

+0

然後在您的XPage中插入'。它會在一個地方顯示所有錯誤信息。 – 2014-11-06 21:00:10

+0

謝謝赫爾曼,如果我點擊豐富的文本內,並不插入任何東西,它顯示錯誤信息,但如果我不點擊裏面的富文本顯示什麼。 – Maryam 2014-11-06 23:10:14

1

對於標準組件,我知道如果有一個requiredValidator以及驗證只觸發。基本上,如果您想確保內容符合特定標準,則假設您需要驗證該字段不是空白。

+0

我想檢查RTF格式是不是空白不是它的內容。 – Maryam 2014-11-05 22:55:02

+0

我不確定你是否確認了。如果有附件,是否提交值不爲空?我的第一步是檢查驗證器是否被觸發,然後是什麼提交值。如果驗證器沒有觸發,那可能是因爲它期望一個requiredValidator。如果您只想檢查已添加的附件,則可能需要將驗證移至保存功能。 – 2014-11-05 23:07:04

+0

當用戶點擊提交按鈕,如果富文本是空白的,它應該顯示一個錯誤消息,因爲這我使用submittedValue()。 – Maryam 2014-11-05 23:55:19