Контент в текстовых областях, для которых установлено использование nicEdit, не обновляется, чтобы отражать изменения пользователя - PullRequest
7 голосов
/ 05 ноября 2010

Примите мои извинения из-за моего низкого уровня английского

Я использую для загрузки страницы с помощью jQuery, и я использую nicEdit на этой странице, и я публикую данные на другой странице с помощью jQuery. Но он просто отправляет пустое значение вместо того, что пользователь написал в редакторе (если я определяю значение по умолчанию для моей текстовой области, он просто отправляет значение по умолчанию, а не текст, написанный пользователем). В чем проблема и как ее решить?

Спасибо.


ОБНОВЛЕНИЕ После прочтения этой связанной статьи , ее комментариев в конце и прочтения других статей, которые я нашел, необходимо использовать этот способ перед отправкой формы:

nicEditors.findEditor('textarea_id').saveContent();

Для этого я использую jquery, чтобы выбрать любую текстовую область, и вызываю .each() функцию jquery. Например:

$('textarea').each(function(){
   var IDOfThisTextArea =   $(this).attr('id');
   nicEditors.findEditor(IDOfThisTextArea).saveContent()
});

Это прекрасно работает для текстовой области, созданной заранее. Но у меня есть некоторая текстовая область, которая динамически создается с помощью jQuery, и функция findEditor(), указанная выше, не нашла их и не вызывает saveContent() для них.

Для этой проблемы, что вы предлагаете ??????

Тпй

Ответы [ 2 ]

3 голосов
/ 29 июля 2011

Как насчет сохранения всех таких экземпляров перед отправкой формы

$('input[type=submit]').bind('click', function () {
    for(var i=0;i<nicEditors.nicInstances.length;i++){
        nicEditors.nicInstances[i].saveContent();
    }
});
1 голос
/ 26 января 2012

Основной ответ для динамически создаваемых элементов - использовать что-то вроде $('selector').on('click', function(...)) или что-то, что вы динамически привязываете к инициирующему действию, чтобы тело function находило любые релевантные .nice-wrapper textarea s (с помощью разумных селекторов) в качестве jquery объект $textareas, и до выполнения отправки

 $textareas.each(function(){ 
  nicEditors.findEditor(this.id).saveContent();
 });

, что позволит вам использовать некоторые удобные методы, такие как .serializeArray. Очевидно, есть много разных способов решения этой проблемы - например, возможно, вы хотите привязать событие отправки формы вместо нажатия на кнопку - но я думаю, что многие (большинство?) Из разумных решений упадут в той же общей категории.

...