2009-12-14 30 views
2

我使用CKeditor和基於jQuery的驗證插件。我的textarea(帶有CKEditor)正在通過jQuery進行驗證,但只有在第二次點擊我的提交按鈕後纔有效。使用CKEditor與jQuery驗證插件不工作

簡而言之: 我第一次在CKEditor中輸入數據時提交表單,它說「字段爲空」。第二次表示沒關係,表單正在提交。

我讀了一個解決方案:「你能解決這個問題,通過每個驗證程序之前正確調用CKEDITOR.editor :: updateElement」

我無法找到如何實施,雖然它:

$(document).ready(function(){ 
    CKEDITOR.replace('prod_description', 
    { 
     toolbar: 'MyToolbar' 
    } 
    ); 

    $("#btnOk").click(function(){ 
     CKEDITOR.instances.editor1.updateElement(); 
     alert('click'); 
    }); 
}); 

這總是給我的錯誤:「CKEDITOR.instances.editor1是未定義」

關於如何解決這個任何想法。從CKEditor的文件是在這裏: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#updateElement

+1

console.dir(CKEDITOR); console.dir(CDEDITOR.instances); – czarchaic 2009-12-14 21:10:35

+0

是java嗎?我正在使用Javascript和Jquery的HTML頁 – Jorre 2009-12-14 21:12:15

+0

沒有它的JavaScript。你在用螢火蟲嗎? – czarchaic 2009-12-14 21:36:22

回答

4

感謝czarchaic,

我解決它通過寫

CKEDITOR.instances.prod_description.updateElement();

其中「prod_description」是與CKeditor鏈接的textare的名稱。

+0

哪裏寫這個,小提琴在哪裏?請提供相同的小提琴,我有相同的困難 – 2014-04-25 06:10:01

1

這可能不是最好的辦法,但我創建了一個jQuery規則,只需檢查CKEditor中是否有數據。如果有數據,則通過規則。如果不是,那麼它失敗。這似乎對我很好。

//Have to build custom method to check ckeditor 
jQuery.validator.addMethod("ckeditor", function(value, element) { 
    var textData = editor.getData(); 
    if(textData.length>0) return true; 
    return false; 
}, "No data in editor"); 

然後,我的規則是這樣的:

'fieldName': "ckeditor" 
+0

這對我來說很好+1,因爲這是答案。 – 2012-08-09 05:00:30

+0

在哪裏寫這個,在哪裏小提琴?請提供相同的小提琴,我有相同的困難 – 2014-04-25 06:14:58

1

我有我的頁面上有多個CKEDITORS,所以我這樣做:

 // You need to update the editors before jqValidator. 
     for (var i in CKEDITOR.instances) 
     { 
      CKEDITOR.instances[i].updateElement(); 
     } 
     if (!jqValidator.form()) 
     { 
      alert('Error Alert: please correct the errors detailed below, then click "Apply changes" again.'); 
      return; 
     } 
+0

這對我來說非常合適。謝謝! – 2013-08-31 16:02:27

+0

在哪裏寫這個,在哪裏小提琴?請提供相同的小提琴,我有相同的麻煩 – 2014-04-25 06:15:31