2012-12-17 11 views
9
Kullanıcıların bir kez login sayfadaki içeriği düzenlemek satır içi izin vermek CKEditor kullanıyorum

Satır içi düzenleyici içeriğini sunucuya nasıl kaydederim? .

kullandığımı verilere erişebilir biliyorum:

var data = CKEDITOR.instances.editable.getData(); 

ama nasıl bilmiyorum Verileri bir komut dosyasına göndererek veritabanını güncelleyebilirim. Komut birisinin birer birer contenteditable elemanının seçimini iptal ettiğinde işe yarayacaktı ... ama bu mümkün olsa bile bilmiyorum.

Herhangi bir ipucu harika olurdu! :)

Sitem php/mysql kullanılarak oluşturulmuştur.

cevap

20

şey: kapalı editor.setData() veya kullanıcıyı denilen kullanıcı: bu gibi diğer etkileşimler ile çalışmaz

CKEDITOR.disableAutoInline = true; 

CKEDITOR.inline('editable', { 
    on: { 
     blur: function(event) { 
      var data = event.editor.getData(); 
      // Do sth with your data... 
     } 
    } 
}); 

Not düzenleme yaparken web sayfası. Bu gibi durumlarda içerikler kaybolacaktır. Yerinde olsam, ben daha çok düzenli olarak yeni veriler için kontrol ederdim:

CKEDITOR.disableAutoInline = true; 

var editor = CKEDITOR.inline('editable', { 
    on: { 
     instanceReady: function() { 
      periodicData(); 
     } 
    } 
}); 

var periodicData = (function(){ 
    var data, oldData; 

    return function() { 
     if ((data = editor.getData()) !== oldData) { 
      oldData = data; 
      console.log(data); 
      // Do sth with your data... 
     } 

     setTimeout(periodicData, 1000); 
    }; 
})(); 
+1

Düzenlenecek bir sayfada birden fazla alanım olduğu için, ckeditor'u bir ID yerine belirli bir sınıfta aramak mümkün mü? –

+0

Öğelerinize "contenteditable =" true "' yazın ve "CKEDITOR.disableAutoInline = false" öğesini ayarlayın. Ben olmadan bulanıklık tetiklenecek CKEditor nasıl elde edersiniz sonra – oleq

+0

: 'CKEDITOR.inline ('başlık', {üzerine \t \t \t \t \t: { \t \t \t \t \t \t bulanıklık: function (event) {' –

1

Öyle görünüyor "bulanıklık" olayı size yardımcı olabilir: böyle http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#event:blur

+0

Tamam, bu yüzden ne "editör" sayfanızda çok fazla contenteditable = gerçek öğeye sahip olduğunuzun nasıl olduğunu biliyorsunuz, ancak bunlardan birinin ne zaman aktif olacağını (ya da belki de sen bilmiyorsun) Hatta bazı öğeler dinamik olarak eklenebileceğinden, elemanların ne olacağını bile bilmiyorum.) CKEDITOR.on kullanarak işe yaramaz (olaylar asla aranmaz) – Michael

+0

Ne yaptım, bazen editörleri dinamik olarak veriye bağlı olarak yapıyorum Bir, bazen on ve benzeri. Bu senaryoda, komut dosyamda bir "editör" örneği vardı. Küresel "CKEDITOR.on" değil, tam olarak "editor.on" örneği. Böylece tam olarak "bulanıklık" olayını tam olarak her örnekte tanımlayabildim. Tipik olarak "veriyi (editor.getData()) almak ve bir sunucu ile konuşmakta olan parça uygulamasına" gönderen basit bir işlevdi. –

3
CKEDITOR.inline('editable' ,{ 
     on:{ 
      blur: function(event){ 
       if (event.editor.checkDirty()) 
        console.log(event.editor.getData()); 
      } 
     } 
    }); 

bu deneyin.