2009-03-05 8 views
9

Ich begann mit der Bereitstellung von WYMeditor über alle Arten von Inhalten auf einer Website, und es sieht gut aus. Jetzt habe ich gesehen, wie es funktioniert, zu speichern und zu sehen, aber es liefert nichts und ich habe keine Ahnung warum.WYMeditor wird Inhalt nicht in textarea Wert

Ich habe es aus verschiedenen Blickwinkeln betrachtet. Ich würde an dieser Stelle sogar einen Monkeypatch machen, wenn ich lernen kann, wie man die Daten selbst ergreift, kann ich sie zum Zeitpunkt der Einreichung ins Feld stecken. Das oder der wahre Grund, warum es nicht alleine funktioniert, wäre großartig. Jeder mit einer Idee?

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

Antwort

12

hatte ich das gleiche Problem, und bemerkte Beispiel 1 im wymexamples Verzeichnis von der Suche von ihrer Website zur Verfügung gestellt, die WYMeditor spezielle Elementklassen (CSS-Klassen), die Teile der Seite, um anzuzeigen, verwendet, die zusätzlichen haben müssen Verhalten hinzugefügt.

Insbesondere die Submit-Schaltfläche hat eine Klasse von Wymupdate, und ich denke, dies führt dazu, dass ein Pre-Submit-Handler dem Steuerelement zugeordnet wird.

Nachdem ich die wymupdate-Klasse der Schaltfläche "Senden" in meiner Quelle hinzugefügt hatte, wurde das Feld textarea mit dem HTML-Code ausgefüllt, bevor die Übergabe erfolgte und serverseitig in der richtigen POST-Variablen angezeigt wurde.

ich unter den relevanten Bits aus der Beispielquelle enthalten, die es funktioniert ...

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

... obwohl die wymupdate Klassenvereinigung scheint Automagic zu sein , die Wymeditor-Klassenassoziation wird explizit ausgelöst, wie in der <script> gezeigt, und dann muss dies veranlassen, dass sie nach Dingen der Klasse wymupdate sucht.

+0

Leider ist dies nicht das Problem, das ich hatte. Es war nicht ein Problem der ursprünglichen Textarea den richtigen Inhalt zu bekommen, wenn ich es absende (es tut), aber wenn ich den HTML-Bearbeitungsmodus aktiviert, der dann sowohl das Raw-HTML-Textbereich und WYMeditor Rich-Text-Bearbeitungsfeld zeigt, bearbeiten ändert sich nicht das andere. – ironfroggy

+0

Das stimmt, WYMeditor spiegelt Änderungen nicht in textarea ohne wymupdate-Klasse wider. –

4

Statt dessen:

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

Sie brauchen:

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

Das ist richtig. Mit 'updateSelector: 'form'' und' updateEvent:' submit' habe ich es noch allgemeiner gemacht. Scheint zu arbeiten. – Grocery

0

Sie können auch alle wymeditors aktualisieren zwingen, die ich vor dem eigentlichen tun musste vorlegen, weil ich benutzerdefinierte Funktionen hatte, die manipuliert der Textarea Inhalt.

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(); 
});