Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

класс CLightHTMLEditor

00 голосов
6
Добрый день. Подскажите, как используя класс CLightHTMLEditor
сделать проверку Javascriptom на заполнение поля
Код
$LHE = new CLightHTMLEditor;
$LHE->Show(array(
   'id' => "detail_text",
   'content' => $arResult["ELEMENT"]["DETAIL_TEXT"],
   'inputName' => "DETAIL_TEXT",
   'inputId' => "DETAIL_TEXT",
   'width' => "100%",
   'height' => "300px",
   'bUseFileDialogs' => "N",
   'bFloatingToolbar' => "N",
   'bArisingToolbar' => "N",
   'jsObjName' => "",
   'toolbarConfig' => $toolbarConfig,
   'videoSettings' => ""
));


Задача: есть поле - например детальное описание, в нем надо сделать проверку javascriptom на заполненность этого поля (обязательное заполнение). И как это проверить. Даже когда поле визуально пустое - оно содержит внутри тег "<br/>". А по идее может содержать и другие пустые теги - например "<p></p>".
Подскажите, может быть в Битриксе есть какой то методо для этого класса для проверки?
спросил 27 Янв, 13 от ROKKI (160 баллов)

6 Ответы

00 голосов
Добрый день.

Штатного метода - нет.
Но вы можете повесить JS обработчик на onsubmit, в котором можно проверить содержимое input-а (в Вашем случае - 'inputId' => "DETAIL_TEXT"). И в проверке пустые теги, можно не учитывать.
ответил 09 Фев, 13 от Okven (300 баллов)
00 голосов
т.е. написать там что типа функции strip_tags как в php, на регулярных выражениях?
ответил 24 Фев, 13 от ROKKI (160 баллов)
00 голосов
Цитата
Сергей Лисов пишет:
т.е. написать там что типа функции strip_tags как в php, на регулярных выражениях?


Ну Вам виднее. Если я правильно понял, то вам просто нужно вырезать все пустые и незначащие теги. Ну или вообще все теги, и проверить есть ли "текст". Да, при помощи регулярных выражений.
ответил 22 Март, 13 от Okven (300 баллов)
00 голосов
Одними регулярными выражениями не обойдешься. Если вставка в поле редактора была из Word, то он добавляет кучу своих тегов. Для предварительной очистки вставленного из Word текста можно воспользоваться функцией, выдранной из одного визуального редактора:
Код
<script type="text/javascript">

function CleanWord( html )
{
  bIgnoreFont = true;
  bRemoveStyles = true;

  html = html.replace(/<o:p>\s*<\/o:p>/g, '') ;
  html = html.replace(/<o:p>.*?<\/o:p>/g, ' ') ;

  // Remove mso-xxx styles.
  html = html.replace( /\s*mso-[^:] :[^;"] ;?/gi, '' ) ;

  // Remove margin styles.
  html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '' ) ;
  html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"" ) ;

  html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '' ) ;
  html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;

  html = html.replace( /\s*TEXT-ALIGN: [^\s;] ;?"/gi, "\"" ) ;

  html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;] ;?"/gi, "\"" ) ;

  html = html.replace( /\s*FONT-VARIANT: [^\s;] ;?"/gi, "\"" ) ;

  html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '' ) ;
  html = html.replace( /\s*tab-stops:[^"]*/gi, '' ) ;

  // Remove FONT face attributes.
  if ( bIgnoreFont )
  {
    html = html.replace( /\s*face="[^"]*"/gi, '' ) ;
    html = html.replace( /\s*face=[^ >]*/gi, '' ) ;

    html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, '' ) ;
  }

  // Remove Class attributes
  html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3") ;

  // Remove styles.
  if ( bRemoveStyles )
    html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;

  // Remove empty styles.
  html =  html.replace( /\s*style="\s*"/gi, '' ) ;

  html = html.replace( /<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi, ' ' ) ;
  html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;

  // Remove Lang attributes
  html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;

  html = html.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' ) ;

  html = html.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' ) ;

  // Remove XML elements and declarations
  html = html.replace(/<\?\?xml[^>]*>/gi, '' ) ;

  // Remove Tags with XML namespace declarations: <o:p><\/o:p>
  html = html.replace(/<\/?\w :[^>]*>/gi, '' ) ;

  // Remove comments [SF BUG-1481861].
  html = html.replace(/<\!--.*?-->/mg, '' ) ;

  html = html.replace( /<(U|I|STRIKE)> <\/\1>/g, ' ' ) ;

  html = html.replace( /<H\d>\s*<\/H\d>/gi, '' ) ;

  // Remove "display:none" tags.
  html = html.replace( /<(\w )[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none(.*?)<\/\1>/ig, '' ) ;

  // Remove language tags
  html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3") ;

  // Remove onmouseover and onmouseout events (from MS Word comments effect)
  html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3") ;
  html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3") ;

    // The original <Hn> tag send from Word is something like this: <Hn style="margin-top:0px;margin-bottom:0px">
    html = html.replace( /<H(\d)([^>]*)>/gi, '<h$1>' ) ;

    // Word likes to insert extra <font> tags, when using MSIE. (Wierd).
    html = html.replace( /<(H\d)><FONT[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
    html = html.replace( /<(H\d)><EM>(.*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );

  // Remove comments
  html = html.replace( /<\!--.*-->/mg, '' ) ;

  return html ;
}

</script>
ответил 21 Июль, 13 от Agniia (140 баллов)
00 голосов
Добрый день!
Присоединяясь к вопросу, прошу подсказать, как возможно использовать обработчики событий для ограничения количества вводимых а поле символов?
ответил 25 Окт, 13 от Astom (140 баллов)
00 голосов
Здравствуйте, пытаюсь добавить обработчик onsubmit, но форма в принципе не реагирует на это. Может кто привести рабочий пример? Нужно ограничить количество символов при добавлении комментария
ответил 28 Янв, 14 от Evanes (100 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 09 Апр, 14 от Dexteres (100 баллов)
0 голосов
1 ответ
спросил 06 Дек, 13 от Asteria (1,840 баллов)
0 голосов
5 ответов
спросил 19 Июль, 13 от asderte (260 баллов)
0 голосов
3 ответов
спросил 22 Март, 13 от Texnik (1,860 баллов)