2011-05-26 31 views
3

簡稱:

  1. 我使用Yii框架

  2. 我有一個CKEDITOR窗口我的網頁上(的PHP/Yii框架 - 正常工作)

  3. 當我擊中按鈕,被產生,並通過AJAX調用

  4. 技術問題所示的新CKEDITOR窗口:這個新的CKEditor窗口正確顯示存儲在數據庫中的文本但是:當我點擊「保存」(與表單的其餘部分一起生成的ajax按鈕)時,來自這個新CKeditor窗口的值將不會保存:CKeditor發回舊值它來自數據庫。

當我刪除CKEDITOR離開平原<textarea>:一切都很好,所以我知道,控制器是好的。

請問,有人經歷過這樣的事情?

回答

1

聽起來像一個典型的後AJAX JS綁定問題。 :)如何解決這個問題有幾種可能性,具體取決於發生了什麼問題。

這個帖子在Yii的論壇應該是你的錢,這就是我得到了大多數的這些建議: http://www.yiiframework.com/forum/index.php?/topic/9341-ckeditor-widget-in-a-cactiveform/

  1. 使用部件化Yii的擴展,它已經解決了這個問題(NHCKEditor?
  2. 將onClick回調添加到提交按鈕,該按鈕將CKEditor內容保存到隱藏的'textarea' ('onclick'=>'CKEDITOR.instances.TEXTAREA_ID.updateElement()',
  3. Use jQuery to get the data from the CKEditor iFrame以使用...無論何處。 AJAX驗證等。

祝你好運!

+0

謝謝!問題出現在兩個地方:ajaxSubmitButton和textarea名稱:因爲所有的ckeditor實例都使用相同的模型,但具有不同的行,它們都具有相同的名稱,所以ajaxSubmitButton。 我使用'onclick'事件手動將ckeditor窗口的內容複製到textarea,併爲每個重複實例引入了附加名稱:D 現在工作正常,我決定放開ajax加載 - i只是無法使它工作,現在他們只是被渲染成單獨的JuiTabs – 2011-05-28 13:40:20

+0

Yii :: app() - > clientscript-> registerScript('duppa'。$ thisLanguageID,' function beforeCommentValidate「。$ thisLanguageID。」( ){ $('textarea [ name = \「」。CHtml :: activeName($ model,'description_translation')。「[」。$ thisLanguageID。「] \」]' ).VAL(T); 返回true; } $('#closeTlumaczenieDialog「。$ thisLanguageID。「')。click(function(){beforeCommentValidate」。$ thisLanguageID。「();}); 」); – 2011-05-28 13:46:25

+0

很高興你能工作! – thaddeusmt 2011-05-29 01:17:43

1

你可以讓CKEDITOR驗證之前更新textarea和客戶方/ AJAX驗證工作將按照預期:

<?php $form = $this->beginWidget('CActiveForm', array(
    'enableAjaxValidation' => true, // one or both 
    'enableClientValidation' => true, // one or both 
    'clientOptions' => array(
     'validateOnSubmit' => true, // optional 
     'beforeValidate' => new CJavaScriptExpression('function(form) { 
      for(var instanceName in CKEDITOR.instances) { 
       CKEDITOR.instances[instanceName].updateElement(); 
      } 
      return true; 
     }'), 
    ), 
)); ?>