2009-03-05 10 views
9

私は、サイトのすべてのコンテンツタイプにWYMeditorを展開し始めました。今、私はそれが保存と表示の仕組みを見なければなりませんが、それは何も提出していないので、私は理由が分かりません。WYMeditorは内容をテキストエリアの値に反映しません

私はこれをいくつかの角度から見てきました。私はこの時点では、私はデータを自分自身をつかむ方法を学ぶことができる場合は、送信時にフィールドにそれを固執することができますmonkeypatchを取るだろう。それだけではうまくいかない本当の理由が、素晴らしいものになるでしょう。アイデアを持っている人は誰ですか?

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

答えて

12

私は同じ問題を抱えていた、とWymeditorが余分に持っている必要がありますページの一部を示すために、特別な要素クラス(CSSクラス)を使用して自分のサイトから提供さwymexamplesディレクトリに例1を見てから気づきました行動は彼らに加えられた。

特に、送信ボタンにはwymupdateのクラスがあり、これにより、送信前ハンドラがコントロールに関連付けられていると考えられます。

ソースのSubmitボタンにwymupdateクラスを追加すると、送信が行われる前にtextareaフィールドにHTMLが書き込まれ、正しいPOST変数にサーバー側が表示されました。

wymupdateクラス関連付けがオートマジックと思われるが、私は...

<form method="post" action=""> 
<textarea class="wymeditor">&lt;p&gt;Hello, World!&lt;/p&gt;</textarea> 
<input type="submit" class="wymupdate" /> 
</form> 

...それを動作させる例示的なソースからの関連するビットの下

<script type="text/javascript"> 
jQuery(function() { 
    jQuery('.wymeditor').wymeditor(); 
}); 
</script> 

を含みますwymeditorクラスの関連付けは、<script>のように明示的にトリガーされます。これにより、クラスwymupdateのものを探す必要があります。

+0

残念ながら、これは私が持っていた問題ではありません。私が提出したときに正しいコンテンツを取得するのは元のテキストエリアの問題ではありませんでしたが、html編集モードを有効にするとraw-htmlテキストエリアとWYMeditorのリッチテキスト編集フィールドの両方が表示され、もう一方は変わらない。 – ironfroggy

+0

そうです、WYMeditorはwymupdateクラスのないテキストエリアへの変更を反映しません。 –

4

の代わりに、この:あなたが必要

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

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

これは正しいです。私は 'updateSelector: 'form''と' updateEvent:' submit'を使ってもっと一般化しました。働いているようだ。 – Grocery

0

ます。また、私が操作したカスタム機能を持っていたので、私は実際に提出する前に行うために必要なすべてのwymeditorsを更新する強制することができテキストエリアの内容。

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(); 
}); 
関連する問題