проверить текстовое поле с помощью tinyMCE - jquery - PullRequest
1 голос
/ 06 января 2010

Я пытаюсь проверить текстовую область, чтобы пользователь не мог добавить новое пустое сообщение через текстовую область tinyMCE.

Но, похоже, это не работает.

Что я делаю не так?

JS:

var msg = $("#msg");
        if(msg.val() == ''){
             $("#msg_error").html("* Can't add an empty message");
        }

Textarea

<textarea rows="5" cols="35" id="msg"></textarea>

Ответы [ 3 ]

4 голосов
/ 06 января 2010

Да, я нашел решение !!

Вот оно:

var content = tinyMCE.get('msg').getContent(); // msg = textarea id

if( content == "" || content == null){
             $("#msg_error").html("* Can't add an empty message");
        }
1 голос
/ 25 июня 2014

Решение

var msg = strip_tags(tinyMCE.get('msg').getContent({format: 'raw'})); // msg = textarea id

Где strip_tags() - обязательная пользовательская функция, как определено ниже:

function strip_tags(input, allowed) {
      //  discuss at: http://phpjs.org/functions/strip_tags/
      // original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
      // improved by: Luke Godfrey
      // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
      //    input by: Pul
      //    input by: Alex
      //    input by: Marc Palau
      //    input by: Brett Zamir (http://brett-zamir.me)
      //    input by: Bobby Drake
      //    input by: Evertjan Garretsen
      // bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
      // bugfixed by: Onno Marsman
      // bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
      // bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
      // bugfixed by: Eric Nagel
      // bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
      // bugfixed by: Tomasz Wesolowski
      //  revised by: Rafał Kukawski (http://blog.kukawski.pl/)
      //   example 1: strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>');
      //   returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'
      //   example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
      //   returns 2: '<p>Kevin van Zonneveld</p>'
      //   example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
      //   returns 3: "<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>"
      //   example 4: strip_tags('1 < 5 5 > 1');
      //   returns 4: '1 < 5 5 > 1'
      //   example 5: strip_tags('1 <br/> 1');
      //   returns 5: '1  1'
      //   example 6: strip_tags('1 <br/> 1', '<br>');
      //   returns 6: '1 <br/> 1'
      //   example 7: strip_tags('1 <br/> 1', '<br><br/>');
      //   returns 7: '1 <br/> 1'

      allowed = (((allowed || '') + '')
        .toLowerCase()
        .match(/<[a-z][a-z0-9]*>/g) || [])
        .join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
      var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
        commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
      return input.replace(commentsAndPhpTags, '')
        .replace(tags, function($0, $1) {
          return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
        });
    }

И затем вы можете выполнить необходимые проверки для переменной msg, например. проверить, если оно пустое:

if (msg == '') {
    // TinyMCE is blank
}

Как это работает

Использование встроенной функции TinyMCE с параметром 'raw' ( link ) возвращает HTML и текст, но с такими сущностями, как &nbsp;, преобразованными в пробел, что помогает в лучшей проверке, например &nbsp; в незашифрованном виде (после обрезки также) не пройдёт тест пустой строки.

Затем пользовательская функция strip_tags удаляет теги HTML, чтобы предоставить вам открытый текст, на котором тесты проверки могут выполняться с большим успехом.

Кредиты

Это решение было взято из @ ответа Уильяма , изучения документации TinyMCE и некоторой помощи phpjs.org .

1 голос
/ 06 января 2010

Текстовая область в TinyMCE не всегда является чисто пустой, хотя вы ничего не видите, TinyMCE автоматически добавляет html в текстовую область. Это означает, что текстовая область будет содержать HTML-код, такой как <p> </p>. Что вы должны сделать, это использовать функцию php strip_tags, чтобы удалить html и проверить пустоту позже. Удачи.

$texttostrip = strip_tags($_POST['formdata']);
if($texttostrip != "") echo "Empty Field";

Это будет означать использование ajax-запросов для проверки данных время от времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...