我需要检测tinymce内容是否已更改。我正在使用symfony 1.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事件放到原始文本区域,但它没有用。
答案 0 :(得分:1)
您可以尝试在Widget的attributes
数组中传递onchange函数:
new sfWidgetFormTextareaTinyMCE(array(...), array('onchange' => '...'));
或者给小部件一个特定的id或类,并使用jQuery添加行为。
$('#myTinyMCETextarea').change(function() {...});
我会选择后一种选择。
答案 1 :(得分:1)
使用jQuery选择器作为@MichalTrojanowski说是我认为最好的方式。这是无阻碍的。
您也可以使用->render()
方法提供属性,就像您对cols
&amp; rows
:
<?php echo $form['intro']->render(array(
'rows' => 3,
'cols' => 100,
'onchange' => 'myfunction();'
)); ?>
顺便说一句,我不认为当用户编辑内容时会触发此方法。由于TinyMCE重新创建一个iframe(或某种类型)来处理编辑器。
您最好查看TinyMCE内置的onChange事件。像这样的东西: