概要: Jeditableにonsubmit
またはコールバックを提供しようとすると、エラーが発生します。onreset
Object [function] has no method 'apply'
ここにたどり着いた方法: Railsプラグインを使用して、インプレースWYSIWYG編集用のJeditableとjWYSIWYGを提供しています。開発は、私が取り組んでいる特定の機能を要求するRailsプロジェクトによって推進されています。
私が追加したオプションの1つは、この回答で提案されているパターンに従って、編集可能なテキスト自体をクリックする代わりに、ボタンを使用してJeditableの編集モードをトリガーする機能でした。ただし、次のステップは、編集モードではボタンを非表示にし、編集モードを終了するとボタンを再び表示することです。
隠すのは簡単です。.toggle()
ボタンに送信するトリガー関数に行を追加しました。明らかにするのは難しい。.toggle()
送信またはキャンセル、そして有益なことに、Jeditableオファーonsubmit
とonreset
コールバックを再度行う必要があると思います。
ただし、これらのコールバックを使用しようとすると、このObject [something] has no method 'apply'
エラーが発生します。
私が試していること:これはRailsヘルパーのコンテキストであるため、実際のメカニズムはこれよりも少し複雑ですが、結果として、このパターンに従おうとして、引数でJeditableを渡そうとしています。
"onsubmit":"showTrigger",
次に、このスクリプトを含めます。
function showTrigger(settings, original) {
$(".edit_trigger[id='element_id']").toggle();
}
ただし、変更を送信したり、編集をキャンセルしたりすると、エラーが発生します
Object showTrigger has no method 'apply'
...上記のように。
また、引数として関数を直接送信してみました"onsubmit"
(つまり"onsubmit": "function(settings, original){$(\".edit_trigger[id='element_id']\").toggle();}"
、代わりに取得Object function(settings, original){$(\".edit_trigger[id='element_id']\").toggle();} has no method 'apply'
します。
このコールバックの処理方法に問題があるはずです。何か案は?
ETA:この回答は、代わりに関数を期待しているときに、どういうわけかJeditableに文字列を提供していることを示唆しています。ただし、私はRailsヘルパーのコンテキスト内で作業しているため、それを修正する方法がまったくわかりません。"showTrigger"
ビットはヘルパーでRuby変数として設定されwindow.showTrigger()
、ウィンドウが読み込まれるときに定義されますが、ページの読み込み時に関数として認識されるように、Ruby変数内でその関数を指定する方法がわかりません。