2012-01-09 6 views
5

Sto lavorando al progetto esistente. Devo rilevare tinyMCE focusout/blur evento per salvarlo automaticamente tramite AJAX. Ho trovato seguente codice di lavoro esistente:tinyMCE textarea evento di messa a fuoco?

// reinit tinymce 
$($("#chapterBill div:.module-container")[indexAfter]).find('textarea').each(function(i){ 
    editorId = $(this).attr('id'); 
    tinymce.EditorManager.execCommand('mceAddControl',true, editorId); 
}); 

Qualcuno può dirmi che come catturare TinyMCE textarea focusout/blur evento?

Grazie

risposta

5

Non si desidera catturare textarea attenzione/sfocatura. Tinymce nasconde la precedente area di testo e crea una iframe contenteditable in cui è possibile inserire/modificare il contenuto. Di tanto in tanto questo contenuto viene scritto nella precedente area di testo nascosta (basata sugli eventi).

Per catturare il focusout/blur sull'editor è necessario impostare un gestore per questo sull'iframe dell'editor.

mettere questo codice nella tua tinymce init

setup : function(ed) { 
    ed.onInit.add(function(ed, evt) { 
     tinymce.dom.Event.add(ed.getDoc(), 'blur', function(e) { 
      // Do something when the editor window is blured. 
      alert('blur!!!'); 
     }); 
    }); 
}, 
+1

Ho trascorso molte ore su questo e finalmente ho capito. Grazie. È una spiegazione perfetta. – Awan

+1

felice di essere stato in grado di aiutare – Thariama

+1

Penso che ci siano alcuni problemi con 'sfocatura' in Google Chrome. Funziona perfettamente in Firefox. – Awan

0

troppo stavo lavorando su una soluzione al fine di salvare il contenuto TinyMCE dinamicamente tramite AJAX. Molte risposte richiedono di impostare questa opzione in init, tuttavia questa comodità non era disponibile per me, a causa del fatto che il codice veniva utilizzato su più sistemi. Ho bisogno di una soluzione pagina specifica, che sono stato in grado di realizzare in questo modo:

$(window).load(function(){ 
    tinymce.get('id').on('blur', function(e) { 
     var content = tinymce.get('id'); 
     console.log(content); 
    }); 
}); 

Con id essendo l'attributo id impostato sul vostro elemento textarea.