【问题标题】:How do I make tinyMCE editor stay in my jQgrid textarea formedit form after first initialize?首次初始化后,如何让 tinyMCE 编辑器留在我的 jQgrid textarea formit 表单中?
【发布时间】:2014-11-09 18:46:48
【问题描述】:

我有一个 jqgrid,我正在尝试在文本区域中使用 tinyMCE 来在我的数据库中发送/存储 html 并重新加载到我的网格中。我有一个用于文本区域的带有 tinyMCE 的自定义列,但是在我打开一次 editform 并在下次打开它时关闭它之后,tinymce 没有初始化,并且出现了一个常规的 textarea。 (此外,当 url modal 失去焦点并专注于 editform。文本被粘贴到后面的“项目”字段中(下图)。)我做错了什么?

我的 TineMCE“链接”失去焦点的原因是一个简单的语法错误。我在editgrid代码中有modal:true。

工作内联编辑实现的更新 以下是正确实现内联编辑的示例(谢谢@Oleg):DEMO1 | DEMO2

内联编辑工作代码示例:

   { name: "note", width: 260, sortable: false, editable: true,
    //edittype: "textarea"
    edittype:'custom',
    editoptions: {
    custom_element: function (value, options) {
    var elm = $("<textarea></textarea>");
    elm.val(value);
    // give the editor time to initialize
    setTimeout(function () {

   try {
    tinymce.remove("#" + options.id);
    } catch(ex) {}
    tinymce.init({selector: "#" + options.id, plugins: "link"});
    }, 50);
    return elm;
    },
    custom_value: function (element, oper, gridval) {
    var id;
    if (element.length > 0) {
    id = element.attr("id");
    } else if (typeof element.selector === "string") {
    var sels = element.selector.split(" "),
    idSel = sels[sels.length - 1];
    if (idSel.charAt(0) === "#") {
    id = idSel.substring(1);
    } else {
    return "";
    }
    }
    if (oper === "get") {
    return tinymce.get(id).getContent({format: "row"});
    } else if (oper === "set") {
    if (tinymce.get(id)) {
    tinymce.get(id).setContent(gridval);
    }
    }
    }}
    }

jqGrid 列:

<script src="js/jquery-1.9.0.min.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
 <script src="js/jquery-ui-1.10.3.custom.js" type="text/javascript"></script>
 <script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>
 <script src="tinymce/tinymce.min.js"type="text/javascript"></script>
 <script src="tinymce/jquery.tinymce.min.js"type="text/javascript"></script>
<script src= "tinymce/plugins/link/plugin.min.js" type="text/javascript"></script>
<script type="text/javascript">

...

{ name:'notes',
  index:'notes',
  edittype:'custom', editable:true,
  editoptions:{
      "custom_element":function( value  , options) {
        var elm = $('<textarea></textarea>');
        elm.val( value );
        // give the editor time to initialize
        setTimeout( function() {
            tinymce.init({selector: "textarea#notes",plugins: "link"});
        }, 100);
        return elm;
      },
      "custom_value":function( element, oper, gridval) {
            if(oper === 'get') {
                return tinymce.get('notes').getContent({format: 'row'});
            } else if( oper === 'set') {
                if(tinymce.get('notes')) {
                    tinymce.get('notes').setContent( gridval );
                }
            }
      }}}

【问题讨论】:

    标签: javascript jquery jqgrid tinymce


    【解决方案1】:

    尝试将custom_element的代码替换为如下

    custom_element: function (value, options) {
        var elm = $("<textarea></textarea>");
        elm.val(value);
        // give the editor time to initialize
        setTimeout(function () {
            try {
                tinymce.remove("#" + options.id);
            } catch(ex) {}
            tinymce.init({selector: "#" + options.id, plugins: "link"});
        }, 50);
        return elm;
    }
    

    还有一个简单的

    【讨论】:

    • 我试过了,但还是一样。在第一次为rowedit打开editform时,它完美地显示了tinymce,只是我无法将文本添加到模式链接编辑器中,如图所示,它被插入到editform项目字段中。但是在我打开第二次显示的纯文本区域框后。
    • 但是我第三次打开它并再次显示tinymce。奇怪。
    • @NewHistoricForm:看看the demo,它使用了我发布的代码。你能重现这里的问题吗?
    • 你的例子做同样的事情。当您第一次打开以编辑行时,它显示正常。但是一旦你关闭并重新打开行编辑器就消失了。但是您的链接模式工作正常,试图弄清楚为什么我的没有。
    • @NewHistoricForm:您使用哪种网络浏览器进行测试?在 IE10 和 Chrome 37 中,我可以多次打开编辑表单并始终看到 tinyMCE 编辑器。
    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 2023-03-03
    • 2020-09-05
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多