2013-02-19 57 views
1

我需要檢測tinymce內容是否已經改變。我正在使用symfony 1.4,sfWidgetFormTextareaTinyMCE。我的形式如何在sfWidgetFormTextareaTinyMCE中添加onchange事件?

部分具有下面的代碼:

$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的,但它沒」工作。

回答

1

使用@MichalTrojanowski所說的jQuery選擇器是我認爲的最佳方式。它沒有阻礙。

你也可以給從->render()方法的屬性,因爲你沒有爲cols & rows

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

順便說一句,我不認爲這個方法會被解僱時,用戶將編輯內容。由於TinyMCE重新創建一個iframe(或某種)來處理編輯器。

你最好看看TinyMCE內建的onChange事件。像這些:

+0

我試過你的第一個解決方案,但沒有奏效。不過,我接受了你的觀點,即當用戶編輯內容時,建議方法不起作用;因爲TinyMCE會重新創建一個iframe來處理編輯器。順便說一句,謝謝你的鏈接。 – Floricel 2013-02-20 01:04:37

1

您可以嘗試通過平變化功能attributes陣列了Widget的:

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

或者給小部件特定的ID或類,並使用jQuery添加行爲。

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

我會選擇後者。

+0

我想提到的方式,但仍,即使我編輯控件呈現,將不會觸發onchange事件。 – Floricel 2013-02-20 00:59:20

相關問題