我在TinyMCE编辑器中有以下jQuery Validation脚本:http://www.zinomen.com/test/validate.html
当firstname和lastname在字段为空时出现错误,但在消息字段中没有错误。
我使用以下代码:
<script type="text/javascript">
$.validator.setDefaults({
submitHandler: function() { alert('submitted, value of message = '+ tinyMCE.get('message').getContent()); }
});
$(document).ready(function() {
// validate signup form on keyup and submit
$("#signupForm").validate({
rules: {
firstname: {
required: true,
minlength: 2
},
lastname: {
required: true,
minlength: 2
},
message: {
required: true,
minlength: 15
}
},
messages: {
firstname: {
required: "Please fill in your firstname",
minlength: "Your firstname must consist of at least 2 characters"
},
lastname: {
required: "Please fill in your lastname",
minlength: "Your lastname must consist of at least 2 characters"
},
message: {
required: "Please fill in your message",
minlength: "Your message must consist of at least 15 characters"
}
}
});
});
</script>
您获得的tinyMCE字段的值:tinyMCE.get('message').getContent();
以及您拥有<textarea id="message" name="message"></textarea>
任何人都可以帮助我,通过空消息字段获取jquery验证错误吗?
答案 0 :(得分:1)
工作jsFiddle:http://jsfiddle.net/jNJ2G/1/
我使用了TinyMCE jQuery plugin并为jquery验证创建了自定义规则
$('#message').tinymce({
// Location of TinyMCE script
script_url : 'http://www.zinomen.com/test/tiny_mce/tiny_mce.js',
// General options
theme : "advanced",
plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Example content CSS (should be your site CSS)
content_css : "css/content.css",
// Drop lists for link/image/media/template dialogs
template_external_list_url : "lists/template_list.js",
external_link_list_url : "lists/link_list.js",
external_image_list_url : "lists/image_list.js",
media_external_list_url : "lists/media_list.js",
});
$.validator.addMethod("textInMce", function textInMce(value, element){
return $('#message').html().length > 15;
}, "Please over 15 chars.");
$.validator.classRuleSettings.textInMce= { textInMce: true };
$("#signupForm").validate({
rules: {
firstname: {
required: true,
minlength: 2
},
lastname: {
required: true,
minlength: 2
}
},
messages: {
firstname: {
required: "Please fill in your firstname",
minlength: "Your firstname must consist of at least 2 characters"
},
lastname: {
required: "Please fill in your lastname",
minlength: "Your lastname must consist of at least 2 characters"
}
}
});
if ($("#signupForm").valid())
alert('succes');
编辑现在这个有效的pastebin示例:) http://pastebin.com/cDJ9033C
答案 1 :(得分:0)
您的代码不起作用,因为$("#signupForm")
引用的表单不包含编辑器而是编辑器源html lement - 您的textarea。 Tinymce使用像textarea这样的html元素来获取和编写编辑器内容,但是像大多数rte编辑器一样创建一个可信的iframe来编辑内容。
验证不起作用因为你的textarea上没有keyup事件 - 这些事件会在编辑器iframe中被触发(我想如果点击提交按钮(?),验证将会起作用。)
为了使你的代码工作,你必须在keyup上写回编辑器内容并在表单元素上触发/触发keyup事件(这可能不适用于某些IE浏览器)。
您可以使用tinymce setup configuration paramter执行此操作。这是一个在你的tinymce init函数(配置)中写的内容的例子:
theme : "advanced",
plugins: "style, paste, wordcount",
...
setup : function(ed){
ed.onKeyUp.add(function (ed, event) {
tinymce.triggerSave();
$("#signupForm#message").trigger({type: 'keyup', ctrlKey: event.ctrlKey, altKey: event.altKey, which: event.keyCode, event:eventObject });
});
},
...