Форма проверки Jquery с полем TinyMCE, которое не выдает ошибку по пустому значению

У меня есть следующий скрипт проверки jQuery с редактором TinyMCE:http://www.zinomen.com/test/validate.html

По имени и фамилии вы получаете ошибку, когда поля пусты, но в поле сообщения вы не получаете ошибки.

Я использую следующий код:

<code><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>
</code>

Значение поля tinyMCE, которое вы получаете:tinyMCE.get('message').getContent(); и в той форме, которую вы имеете<textarea id="message" name="message"></textarea>

Кто-нибудь может мне помочь, чтобы получить пустое поле сообщения также ошибка с JQuery validate?

 Arthur17 апр. 2012 г., 02:12
Пожалуйста, удалите этот вопрос
 Thariama13 апр. 2012 г., 13:05
Вы должны иметь в виду, что tinymce - это редактор в реальном времени, и validate также будет подсчитывать символы HTML-тегов. 15 символов набираются быстро, причина & quot; & lt; p & gt; 123456789 & lt; / p & gt; & quot; уже 15 или 16 символов.

Ответы на вопрос(2)

http://jsfiddle.net/jNJ2G/1/

Я использовалTinyMCE jQuery плагин и создал пользовательское правило для проверки 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');

Edit теперь этот образец пастбина, который действительно работает :) http://pastebin.com/cDJ9033C

 13 апр. 2012 г., 16:05
Строка 42 пастбина должна быть:return $('#message').text().length > 15;
 13 апр. 2012 г., 13:03
хотя бы частичное решение. После нажатия кнопки «Отправить» с заполненным редактором, а затем удаление содержимого «+ редактор» не приведет к ошибке. Кроме того, jQuery validate не будет работать на ключе!

$("#signupForm") относится к форме, которая не "содержит" редактор, но источник редактора html lement - ваша текстовая область. Tinymce использует html-элемент, такой как textarea, для получения и записи содержимого редактора, но tinymce, как и большинство rte-редакторов, создает приемлемый iframe для редактирования содержимого.

Проверка не работает, потому что в текстовой области не будет событий keyup - эти события запускаются в редакторе iframe (я полагаю, проверка будет работать, если вы нажмете кнопку отправки (?)).

Для того, чтобы ваш код работал, вам нужно записать содержимое редактора обратно в keyup и запустить / вызвать событие keyup для элемента формы (это может не работать в некоторых браузерах IE).

Вы можете сделать это, используяПараметр конфигурации установки, Вот пример того, что написать в вашей функции инициализации tinymce (конфигурации):

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 });
    });
},
...

Ваш ответ на вопрос