1

我需要检测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 事件放到原始的 textarea 中,但是没有用。

4

2 回答 2

1

您可以尝试在attributesWidget 的数组中传递 onchange 函数:

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

或者给小部件一个特定的 id 或类并使用 jQuery 添加行为。

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

我会选择后一种选择。

于 2013-02-19T14:29:49.670 回答
1

正如@MichalTrojanowski 所说,使用jQuery 选择器是我认为的最佳方式。它是畅通无阻的。

您还可以从->render()方法中提供属性,就像对cols&所做的那样rows

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

顺便说一句,我认为当用户编辑内容时不会触发此方法。由于 TinyMCE 重新创建了一个 iframe(或某种)来处理编辑器。

你最好看看 TinyMCE 中内置的 onChange 事件。像这样的东西:

于 2013-02-19T15:14:43.063 回答