• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JSライブラリ、DojoのEditorの利用について)

DojoのEditorでリッチテキストを入力した情報が表示されない

このQ&Aのポイント
  • リッチテキスト形式のエディタを実装したフォームを作成するために、Dojoライブラリ内のDijitにあるEditorを利用しています。
  • フォームから送信されたデータの取得方法が誤っているため、投稿者名は表示されますが、テキストフィールド内の情報は表示されません。
  • 解決方法を検索しても見つからないため、この問題に詳しい方からのアドバイスを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Logue256
  • ベストアンサー率66% (2/3)
回答No.2

失礼。 どうも、バージョンが上がってから、確かにうまくいかなくなってますね。参考URLにあるように、送信ボタンが押されたときにdijit.Editorの内容を<input type="hidden" name="field" id="field" />に移す処理を行ってみてはどうでしょうか? 参考URLの例では、イベントリスナで送信ボタンが押されたときにエディタの内容を隠しフィールドにコピーするという処理を行っています。 dojo.addOnLoad(function () { dojo.connect(dojo.byId('[<form>タグのID]'), 'onsubmit', function () { dojo.byId('[PHPに送るデーターの隠しフィールドのID]').value = dijit.byId('[dijit.EditerのID]').getValue(false); }); }); エディタの指定が、dojo.byIdではなくdijit.byIdになっている点に注意してください。dojo.byIdはほぼdocument.getElementByIdと同じですが、dijitを使ったフォームでは内容の取得にdijit.byIdを使います。 実際の違いは、console.dir(dijit.byId('editor_field'));と、console.dir(dojo.byId('editor_field'));で比較するとわかると思います。 dijitによって生成したフォームのパーツは、<input>タグによるデーターの保存を行っているとは限らないので、データーの取得やイベントリスナなどの指定ではをdijit.byIdを使います。 ※dojo.connectは、prototype.jsにおけるEvent.Ovserveとほぼ同等の処理です。

参考URL:
http://dojocampus.org/content/2008/07/16/submitting-dijiteditors-content-in-a-form/
noname#248143
質問者

お礼

非常にわかりやすいご回答どうもありがとうございました。 今回は少し急ぎの用件でしたので、別のエディタを利用するという方法で解決してしまいました>< しかし、Dijit内の様々な付属ライブラリを見ているととても綺麗で便利そうなものがたくさんありましたので、次回また利用する際に必ず参考にさせていただきます。 どうもありがとうございました。

その他の回答 (1)

  • Logue256
  • ベストアンサー率66% (2/3)
回答No.1

Dojo付属のFireBug Liteは活用していますか? まず、djConfig="parseOnLoad: true"にisDebug: trueを追加しましょう。 こうすることで、たとえば、このスクリプトの場合、IEでも、console.log(dijit.byId('editor_field'));と任意な場所に入れることによって、この編集フィールド内にデーターが本当に入っているかが確認できます。 確かdijit.Editorでは、<textarea>タグに割り当てることは推奨されていないはず。<div dojoType="dijit.Editer">でやってみましたか?

参考URL:
http://download.dojotoolkit.org/current-stable/dojo-release-1.2.0/dijit/tests/test_Editor.html

関連するQ&A