WYMeditor не будет отражать содержимое в значение textarea
Я начал развертывать WYMeditor для всех типов контента на сайте, и он выглядит хорошо. Теперь я понял, как это работает, сохраняя и просматривая, но ничего не отправляя, и я понятия не имею, почему.
Я смотрел на это с нескольких сторон. Я бы даже взял обезьянью заплатку на этом этапе, если бы я мог научиться самостоятельно получать данные, я мог бы вставить их в поле во время отправки. Это или реальная причина, по которой он не работает сам по себе, было бы здорово. Кто-нибудь с идеей?
<li><label for="id_comment">comment on this article:</label> <textarea id="id_comment" rows="10" cols="40" name="comment"></textarea>
<script type="text/javascript">
$(document).ready(function(){
jQuery("#id_comment").wymeditor({
"toolsItems":[
{
"name":"Bold",
"css":"wym_tools_strong",
"title":"Strong"
},
{
"name":"Italic",
"css":"wym_tools_emphasis",
"title":"Emphasis"
},
{
"name":"InsertOrderedList",
"css":"wym_tools_ordered_list",
"title":"Ordered_List"
},
{
"name":"InsertUnorderedList",
"css":"wym_tools_unordered_list",
"title":"Unordered_List"
},
{
"name":"Indent",
"css":"wym_tools_indent",
"title":"Indent"
},
{
"name":"Outdent",
"css":"wym_tools_outdent",
"title":"Outdent"
},
{
"name":"Undo",
"css":"wym_tools_undo",
"title":"Undo"
},
{
"name":"Redo",
"css":"wym_tools_redo",
"title":"Redo"
},
{
"name":"CreateLink",
"css":"wym_tools_link",
"title":"Link"
},
{
"name":"Unlink",
"css":"wym_tools_unlink",
"title":"Unlink"
},
{
"name":"Paste",
"css":"wym_tools_paste",
"title":"Paste_From_Word"
}
],
"logoHtml":"",
"updateEvent":"blur",
"stylesheet":"/static/yui/tiny_mce.css",
"skin":"twopanels",
"classesHtml":"",
"updateSelector":"textarea"
});
});
</script></li>
3 ответа
У меня была та же проблема, и, посмотрев на пример 1 в каталоге wymexamples, предоставленном с их сайта, я заметил, что Wymeditor использует специальные классы элементов (CSS-классы), чтобы указать части страницы, для которых необходимо добавить дополнительное поведение.
В частности, кнопка отправки имеет класс wymupdate, и я думаю, что это вызывает привязку обработчика предварительной отправки к элементу управления.
После того, как я добавил класс wymupdate к кнопке отправки в моем источнике, поле textarea было заполнено HTML до того, как произошла отправка, и оно показало серверную часть в правильной переменной POST.
Я включаю ниже соответствующие биты из примера источника, которые заставляют его работать...
<script type="text/javascript">
jQuery(function() {
jQuery('.wymeditor').wymeditor();
});
</script>
...
<form method="post" action="">
<textarea class="wymeditor"><p>Hello, World!</p></textarea>
<input type="submit" class="wymupdate" />
</form>
... хотя ассоциация классов wymupdate кажется автоматизированной, ассоциация классов wymeditor запускается явно, как показано в <script>
, а затем это должно заставить его искать вещи класса wymupdate.
Вместо этого:
"updateEvent":"blur",
"updateSelector":"textarea"
тебе нужно:
"updateEvent":"click",
"updateSelector":"[type=submit]"
Вы также можете принудительно обновить все wymeditors, что мне нужно было сделать перед фактической отправкой, потому что у меня были пользовательские функции, которые манипулировали содержимым textarea.
document.addEventListener('submit',function(e){
e.preventDefault();
//update all the wymeditors
var i=0,wym = jQuery.wymeditors(i);
while(wym){
i++;
wym._element.html(wym.xhtml());
//wym.update();//would use this, but it is not reliable
wym = jQuery.wymeditors(i);
}
e.target.submit();
});