2009-03-05 11 views
9

Zacząłem wdrażać WYMeditor we wszystkich typach treści w witrynie i wyglądało to dobrze. Teraz muszę zobaczyć, jak działa zapisywanie i przeglądanie, ale nic nie przesyła i nie mam pojęcia dlaczego.WYMeditor nie będzie odzwierciedlał zawartości w wartości textarea.

Przyjrzałem się temu z kilku punktów widzenia. Mógłbym nawet wziąć monkeypatch w tym momencie, jeśli mogę nauczyć się, jak pobierać dane samodzielnie, mogę włożyć je na pole w czasie składania. Ta lub prawdziwa przyczyna, dla której nie działa sama z siebie, byłaby świetna. Ktoś z pomysłem?

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

Odpowiedz

12

miałem ten sam problem, i zauważył, patrząc na przykład 1 w katalogu wymexamples dostarczonych z ich strony, że Wymeditor wykorzystuje specjalne zajęcia element (klas CSS) wskazanie części strony, które muszą mieć dodatkowy zachowanie dodane do nich.

W szczególności przycisk submit ma klasę wymupdate i myślę, że powoduje to powiązanie procedury obsługi przed przesłaniem z formantem.

Po dodaniu klasy wymupdate do przycisku przesyłania w moim źródle, pole tekstowe wypełniło się kodem HTML przed wysłaniem zgłoszenia i wyświetliło się po stronie serwera we właściwej zmiennej POST.

I to poniżej odpowiednich bitów ze źródła np które sprawiają, że praca ...

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

... chociaż stowarzyszenie klasa wymupdate wydaje się być to automatyczny , skojarzenie klasy wymeditor jest wywoływane jawnie, jak pokazano w <script>, a następnie musi spowodować, że będzie szukało rzeczy wymupdate klasy.

+0

Niestety to nie jest problem, który miałem. Nie był to problem oryginalnego tekstu, który dostarczył odpowiednią treść, gdy przesyłam (robi to), ale kiedy włączam tryb edycji html, który następnie wyświetla zarówno pole tekstowe raw-html, jak i pole edycji bogatego tekstu WYMeditora, edytując jeden nie zmienia drugiego. – ironfroggy

+0

Zgadza się, WYMeditor nie odzwierciedla zmian z powrotem do textarea bez klasy wymupdate. –

4

Zamiast tego:

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

trzeba:

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

To jest poprawne. Zrobiłem to jeszcze bardziej ogólne z 'updateSelector: 'form'' i' updateEvent:' submit'. Wydaje się działać. – Grocery

0

Można także wymusić zaktualizować wszystkie wymeditors, które muszę zrobić przed faktycznym złożyć, bo miałem niestandardową funkcjonalność, która manipuluje treść 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(); 
}); 
Powiązane problemy