使用tinyMCEvalidationtextarea – jquery

我正在尝试validationtextarea,以便用户无法通过tinyMCE textarea添加新的空消息。

但它似乎似乎不起作用。

我究竟做错了什么 ?

JS:

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

多行文本

  

TinyMCE中的textarea并不总是纯空的,但是你什么都不知道,TinyMCE自动将html添加到textarea。 这意味着textarea将包含像

这样的HTML代码。 你必须做的是使用php的strip_tags函数来删除html并在之后测试空虚。 祝好运。

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

这意味着使用ajax请求时不时地检查数据。

是的,我找到了解决方案!!

它来了:

 var content = tinyMCE.get('msg').getContent(); // msg = textarea id if( content == "" || content == null){ $("#msg_error").html("* Can't add an empty message"); } 

 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('

Kevin


van Zonneveld', ''); // returns 1: 'Kevin van Zonneveld' // example 2: strip_tags('

Kevin van Zonneveld

', '

'); // returns 2: '

Kevin van Zonneveld

' // example 3: strip_tags("Kevin van Zonneveld", ""); // returns 3: "Kevin van Zonneveld" // example 4: strip_tags('1 < 5 5 > 1'); // returns 4: '1 < 5 5 > 1' // example 5: strip_tags('1
1'); // returns 5: '1 1' // example 6: strip_tags('1
1', '
'); // returns 6: '1
1' // example 7: strip_tags('1
1', '

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

然后,您可以对变量msg执行所需的validation,例如检查它是否为空白:

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

这个怎么运作

使用TinyMCE的内置函数和'raw' ( 链接 )选项可以返回HTML和文本,但是使用像 这样的实体  转换为空间,这有助于更好的validation,例如  在明文(也修剪后)将失败空字符串测试。

然后自定义函数strip_tags删除HTML标记,为您提供明文,在该明文上可以运行validation测试,并取得更大成功。

积分

这个解决方案的灵感来自@ william的答案 ,通过TinyMCE的文档 ,以及phpjs.org的一些帮助。