0

https://github.com/CakeDC/TinyMCEを使用してプラグインをダウンロードし、すべての手順に従って CakePHP プロジェクトに統合しました。今、すべてのテキストエリアがtinyMCEエディターに正常に変更されました

しかし、「SUBMIT」をクリックしてフォームを送信すると、ページはデータを送信および投稿できません。エディターをロードしなくても、フォームはデータを送信および投稿できます。

jqueryの問題はありますか?私に助言してください。

ありがとうございました。

Bootsrab.php

CakePlugin::load('TinyMCE');
Configure::write('TinyMCE.editorOptions', array('width' => '500px','height'=>'250px' ));

コントローラ:

public $helpers=array('Html','Form','TinyMCE.TinyMCE');

意見:

$this->TinyMCE->editor(array('theme' => 'advanced', 'mode' => 'textareas'));
echo $this->Form->input('user_requirements',array('required'=>true) );

レイアウト : デフォルトのロード js ファイル:

echo $this->Html->script(array('ddsmoothmenu','jquery-1.7.1.min','jquery-ui-1.8.17.custom.min'));
4

1 に答える 1

1

フィールドを に設定したrequiredため、発生している問題はおそらくブラウザ ベースのフォーム検証です。

問題は、TinyMCE がコンテンツをテキストエリアに挿入する前に検証が適用されるため、テキストエリアが空であるため検証が常に失敗することです。これは非常に長い間知られている「バグ」です。

http://www.tinymce.com/develop/bugtracker_view.php?id=4768 http://www.tinymce.com/develop/bugtracker_view.php?id=5671

Firefox では、画面の左下隅にあるブラウザーの「後ろ」に表示される検証バブルに気付く場合があります。たとえば、Chrome では、次のエラーがスローされます。フォーカスできません」。

手っ取り早い修正方法は、 に設定requiredすることfalseです。required生成されたコンテナーにクラスを保持するには、次のオプションdivを使用して手動で設定する必要があります。div

'div' => array('class' => 'input text required')

novalidateフォームで属性を定義することにより、ブラウザーの検証を完全に無効にすることもできます。

$this->Form->create('ModelName', array('novalidate' => true));

またはformnovalidate送信ボタンの属性を使用します。

$this->Form->submit('Submit', array('formnovalidate' => true));

理論的には、イベントをリッスンしてカスタム検証バブルを表示することも可能invalidですが、ここでの問題はブラウザーの動作が一貫していないことです。つまり、Chrome では非表示の (displayまたはを使用してvisibility) フィールドを検証することはできません。また、コンテンツはテキストエリア フィールドにまだありません。

opacity機能しているように見えるのは、フィールドを非表示にするために使用することです。そのようにして、エディターの下にテキストエリアを配置でき、検証バブルが正しく表示されます。Enterただし、送信ボタンを押したりクリックしたりするときに、テキストエリアにエディターの内容を手動で挿入する必要があります (または、適切なエディター変更イベントを使用する方が簡単です)。後でこれの例を思いつくことができるかどうかを確認します。

更新: TinyMCE 4.x プラグインの形式で修正/回避策を実装しました。これは、自分のアプリケーションの一部でも問題が発生していたためです

于 2013-10-25T12:29:19.160 に答える