2010-12-09 1 views
4

Когда я пытаюсь клонировать текстовое поле с помощью cloneNote (true), клонированная текстовая область не редактируется. Кто-нибудь знает, как решить проблему? Коды примеров показаны следующим образом:Как получить tinyMCE, редактируемый для клонированного textarea функцией cloneNode (true)

<html> 
<head> 
<script type="text/javascript" src="/javascripts/tiny_mce/tiny_mce.js"></script> 
<script type="text/javascript"> 
tinyMCE.init({ 
     theme : "advanced", 
     mode : "textareas", 
}); 
</script> 

<script type="text/javascript"> 

testclonenode = { 

    addAbove : function (element) { 
     var rowEl = element.parentNode.parentNode.parentNode; 
     var rowElClone = rowEl.cloneNode(true); 

     rowEl.parentNode.insertBefore(rowElClone, rowEl); 

     return false; 
    } 
}; 
</script> 
</head> 

<body> 
<table> 
<tr><td> 
    <textarea name="content" style="width:100%">this is a test </textarea> 
<p> <button onclick='return testclonenode.addAbove.call(testclonenode, this);'> Add above </button> 
</td></tr> 
</table> 
</body></html> 

ответ

3

Это не работает. Кроме того, невозможно перемещать редактор tinymce с помощью манипуляции с dom.

В TinyMCE вики гласит следующее:

mceAddControl

Преобразует заданное текстовое поле или DIV в экземпляр редактора, имеющего указанный идентификатор.

Пример:

tinyMCE.execCommand('mceAddControl',false,'mydiv'); 

Итак, когда вы клонировать текстовое поле есть еще одна проблема: Вы будете иметь тот же идентификатор дважды, что приведет к ошибкам доступ правильный TinyMCE экземпляр.

+0

спасибо, я исправил свою проблему – mark 2010-12-15 06:17:50

1

я получил эту работу, используя идентификатор, который увеличивается каждый раз, когда мой клон функция срабатывает, так

var insertslideID = 0; 
function slideclone() { 
    $('<div class="slides"><textarea name="newslide['+insertslideID+'][slide_desc]" id="mydiv'+insertslideID+'"></textarea></div>').insertAfter('div.slides:last'); 
    tinyMCE.execCommand('mceAddControl',false,'mydiv'+insertslideID); 
    insertslideID++; 
} 
$('input[name=addaslidebtn]').click(slideclone); 

Кажется, работает.

1

Немного более аккуратный, я просто использую номер для своего идентификатора - copy1 - это имя моей кнопки - я добавляю новый элемент в конец моего контейнера.

var count = 0; 


$("#copy1").click(function(){ 
    var newId = count; 
    $("#first").clone().appendTo("#container").prop({ id: newId, }); 
    tinyMCE.execCommand('mceAddControl',false,newId); 
    count++; 
    }); 
0

я столкнулся с подобной проблемой, кроме моих идентификаторов элементов (не только прокручиваемых) может быть что угодно, и тот же идентификатор всегда появляется дважды. То, что я сделал, должно быть ужасно неэффективным, но не было заметной потери производительности с десятками элементов на странице.

В основном я удалил ID TinyMCE первый (использует JQuery):

$(new_element).find('.mce-content-body').each(function() { 
    $(this).removeAttr('id'); 
}); 

Тогда я реинициализирована TinyMCE для всех соответствующих элементов.

Смежные вопросы