1

Tinymceのコンテンツが変更されたかどうかを検出する必要があります。私はsymfony1.4、sfWidgetFormTextareaTinyMCEを使用しています。

私のフォームの一部には次のコードがあります:

$tiny_mce_config =  'theme: "advanced",' . 
        'theme_advanced_buttons1: "bold,italic,link",' .
        'theme_advanced_buttons2: "",' .
        'theme_advanced_buttons3: "",' .
        'theme_advanced_statusbar_location : "none",'.
        'cleanup: true,'.
        'force_br_newlines: true,'.
        'force_p_newlines: false,'.
        'forced_root_block: "",'.
        'valid_elements : "br,strong,b,em,i,a[href|title|target]"';


$this->setWidgets(array(
'intro'  => new sfWidgetFormTextareaTinyMCE(
    array(
       'width'  => '616',
       'config'     => $tiny_mce_config
    )
)
));

テンプレートでレンダリングして、これを行いました:

<?php echo $form['intro']->renderLabel('Introduction'); ?>
<?php echo $form['intro']->render(array('rows' => 3, 'cols' => 100)); ?>
<?php echo $form['intro']->renderError(); ?>

onchangeイベントを元のテキストエリアに配置しようとしましたが、機能しませんでした。

4

2 に答える 2

1

@MichalTrojanowskiが言うようにjQueryセレクターを使用するのが、私が考える最良の方法です。邪魔になりません。

&の->render()場合と同様に、メソッドから属性を指定することもできます。colsrows

<?php echo $form['intro']->render(array(
    'rows'     => 3, 
    'cols'     => 100, 
    'onchange' => 'myfunction();'
 )); ?>

ちなみに、ユーザーがコンテンツを編集するときにこのメソッドが実行されることはないと思います。TinyMCEは、エディターを処理するためにiframe(または一種)を再作成するためです。

TinyMCE内に構築されたonChangeイベントを確認することをお勧めします。これらのようなもの:

于 2013-02-19T15:14:43.063 に答える
1

attributesウィジェットの配列でonchange関数を渡すことを試みることができます:

new sfWidgetFormTextareaTinyMCE(array(...), array('onchange' => '...'));

または、ウィジェットに特定のIDまたはクラスを指定し、jQueryを使用して動作を追加します。

$('#myTinyMCETextarea').change(function() {...});

私は後者のオプションを選びます。

于 2013-02-19T14:29:49.670 に答える