двойное сохранение и событие change()
Added by Vladimir Shapovalov 12 months ago
Во первых мне понадобилось чтобы elrte вызывал собитие onchange у целовой textarea. чтобы отметился некий флаг и было известно сохранять ли эту часть формы (данные идут в разные места)
Я поставил вызов this.source.change(); в функции beforeSave. Для проверки повесил алерт и поулчил два алерта. Нашел два вызова beforeSave - в собитии по сабмит формы и в функции save. Во второй убрал, она все равно вызывает тоже самое событие. Но то такое. Главный вопрос - как написать beforeSave так, чтобы change вызывался только если редактор имеет измененный текст по сравнению с целевой Textarea? this.val содержит текст из редактора. A вот this.source.val это текст функции. Как получить текст источника? В двух разных местах this.source присваивается разные значения - то целового объекта, то функции. Причем со строки 1158 он - объект, и инициализируется переменная content которая как я понял не используется - редакор потом поучает текст не из не, а методом функции updateEditor. source же становится функцией. Это какие то остатки "старых времен". Я ни в зуб ногой как же редактор возвращает источнку текст. Что такое this.source.val(this.val()||''); и как это работает???
elRTE.prototype.beforeSave = function() {
this.source.val(this.val()||''); //?????????
this.source.change(); //как поставить условие изменился ли текст??
}
Replies (6)
RE: двойное сохранение и событие change()
-
Added by Troex Nevelin 12 months ago
Если вам просто нужно получить содержимое редактора или обновить textarea смотрите JavaScript_API_RU
RE: двойное сохранение и событие change()
-
Added by Vladimir Shapovalov 12 months ago
я его и так обновляю. мне нужно обновить его только в случае если это действительно нужно. тем более что ваш редактор это делает дважды.
RE: двойное сохранение и событие change()
-
Added by Vladimir Shapovalov 12 months ago
и читайте внимательно - я сожержимое редактора и так виже где - This.val. алерт и консоль помогают отслеживать данные. мне ИСТОЧНИК надо. целевая текстареа
RE: двойное сохранение и событие change()
-
Added by Vladimir Shapovalov 12 months ago
исследовал текст функции. возвращает текст при отсутсвии параметров. итоговый текст выглядит так
elRTE.prototype.beforeSave = function() {
if (this.source.val()!=this.val()){
this.source.val(this.val()||'');
this.source.change();
}
}
RE: двойное сохранение и событие change()
-
Added by Troex Nevelin 12 months ago
Я не могу сказать как точно устроены все внутренности, я их не писал, textarea или тот selector на котором вы вызываете обновляется только при save/submit и при переключении между design/source (если мне не изменяет память).
Мне кажется вашу задачу лучше решать не внутри редактора, а снаружи. Вы можете повесить таймер и дёргать например каждые 2-3 секунду проверку на изменение содержимого. Понятно что это решение не оптимально.
Если уж копать совсем глубоко, то я думаю надо искать объект history и встраивать в него обновлене, примерно сюда
RE: двойное сохранение и событие change()
-
Added by Vladimir Shapovalov 12 months ago
Я проблему уже решил, и без излишних проблем с таймером. разработчикам предлагаю эту функцию (beforeSave) в таком виде и оставить.
Что касается двойного сохранения, то тут я уже точно не спец. Я убрал вызов функции beforeSave из Save (так как последняя все равно вызывает собитие "сабмит", а по нему также происходит вызов этой же функции). Может на самом деле оно именно так и надо. По крайней мере если на save-кнопке висит аякс а не сабмит формы, как по дефолту.
(1-6/6)