WYMeditor не будет отражать содержимое в значение textarea - PullRequest
9 голосов
/ 05 марта 2009

Я начал развертывать 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 ]

12 голосов
/ 16 апреля 2009

У меня была та же проблема, и, посмотрев на пример 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">&lt;p&gt;Hello, World!&lt;/p&gt;</textarea>
<input type="submit" class="wymupdate" />
</form>

... хотя ассоциация классов wymupdate кажется автоматизированной, ассоциация классов wymeditor запускается явно, как показано в <script>, и тогда это должно заставить ее искать вещи класса wymupdate.

4 голосов
/ 17 апреля 2011

Вместо этого:

"updateEvent":"blur",
"updateSelector":"textarea"

вам нужно:

"updateEvent":"click",    
"updateSelector":"[type=submit]"
0 голосов
/ 02 июня 2012

Вы также можете принудительно обновить все 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();
});
...