TinyMCE:disable/enable 由 javascript 编辑

TinyMCE: disable/enable editing by javascript

如何 disable/enable 在 javascript 中编辑 tinymce textarea?

我想我的组件有问题。我在网上找到的所有解决方案都不适合我。

控制器代码为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace #####.Controllers
{
    public class PruebaController : Controller
    {
        // GET: Prueba
        public ActionResult Index()
        {
            return View();
        }
    }
}

查看代码为:

    <textarea class="mceEditor" id="Cabecera_contratos_tinymce" name="content">sakjdgfaskdjgfdgjsdjsquoagsd</textarea>

<script>
        tinymce.init({
            mode : "exact",
            elements: "Cabecera_contratos_tinymce",
            theme: "modern",
            entity_encoding: "raw",
            width: "100%",
            plugins: [
                 "link paste code",
                 "preview",
                 "searchreplace wordcount visualblocks visualchars fullscreen insertdatetime nonbreaking",
                 "table contextmenu directionality"
            ],
            extended_valid_elements: "img[*],i[*],div[*]",
            paste_word_valid_elements: "b,strong,i,em,h1,h2,a[href|name|target],p",
            relative_urls: false,
            toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link | preview fullscreen code" //| forecolor backcolor emoticons
        });

        debugger;
        var theEditor = tinymce.get('Cabecera_contratos_tinymce');
        //At this point theEditor=null. So the next instruction throws an exception
        var theContent = theEditor.getContent();
        $('#Cabecera_contratos_tinymce').attr("disabled", true);
</script>

在视图的布局中,加载了这些脚本:

<script src="/Scripts/kendo/2015.2.902/jquery.min.js"></script><style type="text/css"></style>
    <script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
    <script src="/Scripts/kendo/2015.2.902/jszip.min.js"></script>
    <script src="/Scripts/kendo/2015.2.902/kendo.all.min.js"></script>
    <script src="/Scripts/kendo/2015.2.902/kendo.aspnetmvc.min.js"></script>
    <script src="/Scripts/kendo.modernizr.custom.js"></script>


    <script src="/Scripts/kendo/kendo.culture.es-ES.min.js"></script>

    <script src="/Scripts/jquery.maskedinput.min.js"></script>

    <link href="/Content/bootstrap.min.css" rel="stylesheet">
    <script src="/Scripts/bootstrap.min.js"></script>
    <script src="/Scripts/jquery.cookie.js"></script>
    <link href="/Content/hover-min.css" rel="stylesheet">

    <script src="/Scripts/sindi.js"></script>
    <script src="//tinymce.cachefly.net/4.1/tinymce.min.js"></script>

    <script type="text/javascript">

        //set current to the "en-GB" culture script
         kendo.culture("es-ES");
    </script>

控件正确呈现并按预期工作。但是,如果我无法检索它,我不知道如何禁用它。这张图是我这边的效果图。如您所见,该组件显示正确(也可以正常工作),但无论如何我都无法检索它:

到目前为止我试过了:

有关如何通过 JavaScript 获取对编辑器的引用的示例,请参阅此 TinyMCE fiddle:

http://fiddle.tinymce.com/Oqfaab/1

这使用了您上面包含的大部分代码,并且可以在 disableAll() 方法中成功访问编辑器。由于您没有显示所有代码,因此很难说出可能是什么问题,但是 fiddle 有效并且 returns 有关编辑器的信息到 JavaScript 控制台。

终于找到问题了

尽管我的代码是在 tinymce.init 之后声明的,但它是在 tinymce.init 结束之前执行的。

所以针对我这种情况的任何人的解决方案是:

  1. 管理此事件:http://archive.tinymce.com/wiki.php/Configuration3x:oninit
  2. 在活动中,禁用编辑器:tinymce.EditorManager.execCommand('mceRemoveEditor',true, textarea_id);
  3. 要启用编辑器,请使用:tinymce.EditorManager.execCommand('mceAddEditor',true, textarea_id);