2009-03-05 3 views
9

J'ai commencé à déployer WYMeditor sur tous les types de contenu d'un site et son apparence est bonne. Maintenant, je dois voir comment cela fonctionne en enregistrant et en sauvegardant, mais cela ne donne rien et je ne sais pas pourquoi. Je l'ai regardé sous plusieurs angles. Je voudrais même prendre un monkeypatch à ce stade, si je peux apprendre à saisir les données moi-même, je peux le coller sur le terrain au moment de la soumission. Cela ou la vraie raison pour laquelle ça ne marche pas tout seul serait génial. Quelqu'un avec une idée?WYMeditor ne reflétera pas le contenu dans la valeur textarea

<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> 

Répondre

12

J'ai eu le même problème, et je remarquai de regarder l'exemple 1 dans le répertoire wymexamples fourni à partir de leur site qui WYMeditor utilise des classes d'éléments spéciaux (classes CSS) pour indiquer les parties de la page qui doivent avoir supplémentaires comportement ajouté à eux.

En particulier, le bouton submit a une classe de wymupdate, et je pense que cela entraîne l'association d'un gestionnaire de pré-soumission au contrôle. Une fois que j'avais ajouté la classe wymupdate au bouton submit de ma source, le champ textarea était rempli avec le code HTML avant la soumission et apparaissait côté serveur dans la variable POST correcte.

I ci-dessous les bits inclus pertinents de la source d'exemple qui font fonctionner ...

<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> 

... bien que l'association de classe wymupdate semble être automagique , l'association de classe wymeditor est explicitement déclenchée comme indiqué dans le <script>, puis cela doit l'amener à chercher des choses de la classe wymupdate.

+0

Malheureusement, ce n'est pas le problème que j'avais. Ce n'était pas un problème de textarea original d'obtenir le bon contenu quand je le soumets (mais) quand j'active le mode html-editing, qui montre à la fois la zone de texte raw-html et le champ d'édition de texte riche de WYMeditor, éditant ne change pas l'autre. – ironfroggy

+0

C'est vrai, WYMeditor ne reflète pas les modifications apportées à la zone de texte sans la classe wymupdate. –

4

Au lieu de cela:

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

dont vous avez besoin:

"updateEvent":"click",  
"updateSelector":"[type=submit]" 
+2

Ceci est correct. Je l'ai rendu encore plus général avec 'updateSelector: 'form'' et' updateEvent:' submit'. Ça semble fonctionner. – Grocery

0

Vous pouvez également forcer mettre à jour tous les wymeditors, que je devais faire avant la présenter réelle parce que j'avais des fonctionnalités personnalisées qui manipulable le contenu de 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(); 
}); 
Questions connexes