2014-11-05 3 views
1

Есть ли способ проверить Rich Text? Я добавляю validateExpression, но не работает.Xpages Rich Text validation

Благодаря

<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, но сам по себе не помогает.

Если пользователь щелкает в RichText поле и не вводит ничего, то это содержание получает значение

<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

+0

Вставьте «" в ваш XPage. Он отображает все сообщения об ошибках в одном месте. –

+0

Спасибо Германну, если я нажму внутри богатого текста и не вставляю ничего, что отображает сообщение об ошибке, но если я не нажму внутри богатого текста, он ничего не отобразит. – Maryam

1

Для стандартных компонентов, я знаю, что валидаторы срабатывает только при наличии requiredValidator, а также. В принципе, если вы хотите, чтобы контент соответствовал конкретным критериям, предполагается, что вам также необходимо проверить, что поле не пустое.

+0

Я хочу проверить, что Rich Text не пуст, а не его содержание. – Maryam

+0

Я не уверен, что вы проверяете это. ПредставленоValue не пустым, если есть вложение? Моим первым шагом было бы проверить, активирован ли валидатор, а затем, что представляет представленное значение. Если валидатор не запускается, это может быть связано с тем, что он ожидает требуемогоValidator. Если вы просто хотите проверить вложение, было добавлено, вам может потребоваться переместить валидацию в вашу функцию сохранения. –

+0

Когда пользователь нажимает кнопку отправки, если богатый текст пуст, он должен отображать сообщение об ошибке, из-за этого я использовал submitValue(). – Maryam