2013-01-18 14 views
10

Używam tinyMCE dla textareas i formularz Post przez AJAX.TareMCE textarea i formularz post używając ajax

Ale kiedy próbuję zapisać wartość textarea, przyjmuje ona stare wartości za pierwszym kliknięciem, ale pobiera drugie wartości po drugim kliknięciu.

Próbowałem użyć tinyMCE.triggerSave(), ale nie działa.

Próbowałem również tinyMCE.get ("myid"). GetContent(), nadal pobiera stare wartości.

Mój kod jest następujący.

$(".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; 
    }); 

Proszę o pomoc, każda pomoc będzie mile widziane

Odpowiedz

9

Użyj tego zamiast tinymce.triggerSave();

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

Dzięki, ale użyłem tinyMCE.activeEditor.getContent() i zadziałało. Dzięki za odpowiedź ur. –

+0

oczywiście to robi: tinyMCE.activeEditor jest tym samym wydaniem edytora, którego używasz tinymce.activeEditor. Ale pamiętaj, że tinymce.activeEditor jest ustawiany tylko wtedy, gdy użytkownik kliknie w edytorze, jeśli nie jest zdefiniowany, a tinymce.get ("Twój_edytor_id") zawsze da ci instancję edytora – Thariama

+0

ok dzięki za sugestię. –

33

Można skonfigurować TinyMCE w następujący sposób, aby zachować wartości ukryte pola tekstowe w synchronizacji, jak zmiany są wprowadzane za pośrednictwem edytora TinyMCE:

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

Z tym w miejscu, c dostęp do aktualnych wartości bezpośrednio z elementów textarea w dowolnym momencie.

został przetestowany na TinyMCE 4.0

Demo działa na: http://jsfiddle.net/9euk9/

+0

Niestety, to nie działa dla mnie na TinyMCE 3.x – Pere

+0

@Pere - Wysłałem alternatywną odpowiedź, która działa na TinyMCE 3.x – HappyDog

+0

Warto zauważyć, że dodanie 'editor.triggerSave() 'on' init' również może być użyteczne dla edytorów wbudowanych, ponieważ odpowiednie ukryte pola nie będą miały wartości podczas ładowania – Zach

0

Alternatywna realizacja do jednego pisał Dan Malcolm, dla TinyMCE 3.x, będzie w następujący sposób:

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

Oprócz wersji 3.x ta wersja używa editor.save zamiast tinymce.triggerSave, co oznacza, że ​​aktualizuje tylko bieżący edytor, a nie wszystkie edytory na stronie.