【问题标题】:TinyMCE jQuery validation issueTinyMCE jQuery 验证问题
【发布时间】:2011-06-27 06:51:48
【问题描述】:

我正在为我的页面使用简单的 TinyMCE。使用 jQuery 验证文本区域时出现问题。

jQuery 没有验证我的文本区域。

  1. 仍然保存空文本
  2. 提到(“。不要将文本区域留空”)在 TextArea 中写入某些内容时发生错误。

这是我的代码:

<------------------------------------------------------->
jQuery code:
<------------------------------------------------------->
<script type="text/javascript">
$(document).ready(function() {
    $("#frmeditpages").validate({
        rules: {
            txtdescription:
            {
                required:true
            }

                },
        messages: {
            txtdescription: ".       Don't leave the Text area Empty"

                  }
    });
});
</script>
<----------------------------------------------------------->
<!-- TinyMCE -->
<----------------------------------------------------------->

<script type="text/javascript" src="../js/jquery-lib.js"></script>  
<script type="text/javascript" src="../js/jquery.validate.js"></script>
<script type="text/javascript" src="../tinymce/jscripts/tiny_mce/tiny_mce.js"></script>

<script type="text/javascript">
    tinyMCE.init({
        // General options
        mode : "textareas",
        theme : "simple",
        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,wordcount,advlist,autosave",

        // 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,restoredraft",
        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",

        // Style formats
        style_formats : [
            {title : 'Bold text', inline : 'b'},
            {title : 'Red text', inline : 'span', styles : {color : '#ff0000'}},
            {title : 'Red header', block : 'h1', styles : {color : '#ff0000'}},
            {title : 'Example 1', inline : 'span', classes : 'example1'},
            {title : 'Example 2', inline : 'span', classes : 'example2'},
            {title : 'Table styles'},
            {title : 'Table row 1', selector : 'tr', classes : 'tablerow1'}
        ],

        // Replace values for the template plugin
        template_replace_values : {
            username : "Some User",
            staffid : "991234"
        }
    });
</script>
<!-- /TinyMCE -->

【问题讨论】:

  • 请提供声明FORM和TEXTAREA标签的html代码
  • 而这个问题是在启动tinyMCE的时候出现的?但是当你忽略 tinyMCE 时就不会了?

标签: php jquery tinymce


【解决方案1】:

您需要注意tinymce 不等于textarea! Tinymce 将在初始化时隐藏文本区域并创建一个 iframe,用户可以在其中编辑内容。因此需要调用 tinymce save 方法将 iframe 内容写回 textarea。

所以你需要以下代码

var editor = tinymce.get( editor_id);
editor.save();  // writes content back to the textarea
// you may now use jQuery or editor.getContent(); to acces the content

【讨论】:

  • 请确认一件事;如果我的表单中有两个文本,请说 A 和 B,并且只想在 A 上实现 tinyMCE。有可能吗?
  • 是的,这是可能的——你唯一应该确保的是你只为第一个文本区域初始化 tinymce。您可以使用此处描述的 tinymce 初始化参数模式执行此操作:tinymce.moxiecode.com/wiki.php/Configuration:mode
【解决方案2】:

按照这个逻辑去工作

$("#buttontosave").click(function() {
    tinyMCE.triggerSave();
    var status;
    status = $("#menu_create").valid(); //Validate again
   /* if(status==true)
    { 
       //alert('true')
    }
    else 
    { 
         //  alert('false')

    }*/

});

按钮保存您的提交按钮 ID 注意:请验证隐藏值,不要这样做

ignore: 'input[type="hidden"]',

请发表评论

   //ignore: 'input[type="hidden"]',

【讨论】:

    【解决方案3】:

    以下代码对我有用,对你也一样。只需在您的验证调用之前但在触发提交之后放置以下代码

    var 内容 = tinyMCE.activeEditor.getContent(); // 获取内容 $('#textareaID').val(content);

    【讨论】:

      【解决方案4】:

      这是因为 tinymce 使您的 textarea 隐藏。要解决此问题,请将其放在 validate 调用之前:

      $(document).ready(function(){    
          $.validator.setDefaults({
              ignore: []
          });
      
          // validate call
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        相关资源
        最近更新 更多