2013-01-18 8 views
10

Sto usando tinyMCE per i campi di testo e modulo di POST tramite AJAX.TinyMCE textarea e modulo di posta utilizzando ajax

Ma quando sto cercando di salvare il valore textarea, sta prendendo i vecchi valori al primo clic, ma assume valori aggiornati al secondo clic.

Ho provato a utilizzare tinyMCE.triggerSave() ma non ha funzionato.

Ho anche provato tinyMCE.get ('myid'). GetContent(), continua a prendere vecchi valori.

Il mio codice è come segue.

$(".submit").live("click", function() { 
      tinyMCE.triggerSave(); 
      var f = $(this).parents("form"); 
      var action = f.attr("action"); 
      var serializedForm = f.serialize(); 
      //tinyMCE.triggerSave(); also tried putting here 
      $.ajax({ 
       type: 'POST', 
       url: action, 
       data: serializedForm, 
       async: false, 
       success: function (data, textStatus, request) { 
        $(".divform").html(data); 
       }, 
       error: function (req, status, error) { 
        alert&("Error occurred!"); 
       } 
      }); 
    return false; 
    }); 

Si prega di aiuto, qualsiasi aiuto sarebbe apprezzato

risposta

9

Utilizzare questo invece di tinymce.triggerSave();

$('#' + 'your_editor_id').html(tinymce.get('your_editor_id').getContent()); 
+2

Grazie ma ho usato tinyMCE.activeEditor.getContent() e ha funzionato. Grazie per la tua risposta. –

+0

ovviamente: tinyMCE.activeEditor è la stessa istanza dell'editor che si ottiene con tinymce.activeEditor. Ma sappi che tinymce.activeEditor viene impostato solo quando l'utente fa clic sull'editor altrimenti non è definito mentre tinymce.get ('your_editor_id') ti darà sempre un'istanza dell'editor – Thariama

+0

ok grazie per il suggerimento. –

33

È possibile configurare TinyMCE come segue per mantenere i valori del textarea nascosti in sincronia come vengono apportate modifiche tramite editor TinyMCE:

tinymce.init({ 
    selector: "textarea", 
    setup: function (editor) { 
     editor.on('change', function() { 
      tinymce.triggerSave(); 
     }); 
    } 
}); 

Con questo in atto, si c un accesso aggiornato valori direttamente dagli elementi textarea in qualsiasi momento.

Questo è stato testato su TinyMCE 4.0

Demo in esecuzione a: http://jsfiddle.net/9euk9/

+0

Sfortunatamente, non funziona per me su TinyMCE 3.x – Pere

+0

@Pere - Ho pubblicato una risposta alternativa che funziona su TinyMCE 3.x – HappyDog

+0

Vale la pena notare che l'aggiunta di 'editor.triggerSave() 'on' init' può essere utile anche per gli editor in linea poiché i campi nascosti corrispondenti non avranno un valore sul caricamento – Zach

0

Un'implementazione alternativa a quello pubblicato da Dan Malcolm, per TinyMCE 3.x, sarebbe la seguente:

tinymce.init({ 
    selector: "textarea", 
    setup: function (editor) { 
     editor.onChange.add(function() { 
      editor.save(); 
     }); 
    } 
}); 

Oltre a lavorare su 3.x, questa versione utilizza editor.save anziché tinymce.triggerSave, il che significa che aggiorna solo l'editor corrente anziché tutti gli editor nella pagina.

Problemi correlati