CodeMirror无法正确更新textarea

时间:2013-04-01 17:21:42

标签: jquery codemirror

我在jquery-ui选项卡小部件的页面上有多个CodeMirror实例。我动态地创建这些实例:

//Returns a code mirror editor
editor.create = function(id){

    var codeID = "code-" + id;
    var $node = $('<form><textarea id="' + codeID + '" name="' + codeID + '">test</textarea></form>');
    editor.editors[id] = CodeMirror.fromTextArea($node.find("textarea").get(0), editor.options);

    return $node;


};

每个实例都存储在一个名为editors的全局数组中。

创建后,它会附加到DOM。

var $editor = editor.create(id);
var tabID = "tabs-" + id;
var $tab = $('<li id=' + id + '><a href="#' + tabID + '">' + name + '</a> <span class="ui-icon ui-icon-close" role="presentation">Remove Tab</span></li>');
var $tabPanel = $('<div id="' + tabID + '"></div>');

$tabPanel.append($editor);

$('#coder > ul').append($tab);
$('#coder').append($tabPanel);
coderTabs.tabs("refresh");

放置在textarea中的测试文本显示在编辑器中。但是,调用editor.editors[id].save()不会更新textarea。

$('#project-save').click(function(){
        var active = $( "#coder" ).tabs( "option", "active" );
        var id = $('#coder .ui-tabs-nav li').eq(active).attr("id");
        console.log(editor.editors[id]);
        editor.editors[id].save();
        return false;
}); 

我不确定我缺少哪一步让textarea更新。任何帮助将非常感激!

1 个答案:

答案 0 :(得分:5)

原来我对这是如何运作有错误的概念。我将.save()添加到onBlur,然后当我需要对编辑器实例上的.getValue()数据执行某些操作时。