Saya menggunakan jQuery dan TinyMCE untuk mengirimkan formulir, tetapi ada masalah dalam serialisasi karena nilai Textarea tidak diposting.
Ini kodenya:
<form id="myForm" method="post" action="post.php">
<textarea name="question_text" id="question_text" style="width:543px;height:250px;"></textarea>
</form>
bahasa: lang-js
$('#myForm').submit(function() {
$.ajax({
type: 'POST',
url: $(this).attr('action'),
data: $(this).serialize(),
success: function(data) {
$('#result').fadeIn('slow');
$('#result').html(data);
$('.loading').hide();
}
})
return false;
});
tinyMCE.init({
// General options
mode : "textareas",
theme : "advanced",
// Theme options
theme_advanced_buttons1 : "bold,italic,underline,separator,image,separator,justifyleft,justifycenter,justifyright,jformatselect,fontselect,fontsizeselect,justifyfull,bullist,numlist,undo,redo,styleprops,cite,link,unlink,media,advhr,code,preview",
theme_advanced_buttons2 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resize_horizontal : false,
theme_advanced_resizing : true,
extended_valid_elements :"a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
});
Dapatkah Anda menjelaskan kepada saya apa yang harus saya ubah, dan mengapa, untuk mendapatkan nilai di area teks yang diposting?
$('#textarea_id').tinymce().save();
di handler onSubmit formulir Anda.Anda dapat mengkonfigurasi TinyMCE sebagai berikut untuk menjaga nilai textarea tersembunyi tetap sinkron saat perubahan dilakukan melalui editor TinyMCE:
Elemen textarea akan selalu diperbarui secara otomatis dan Anda tidak memerlukan langkah tambahan sebelum membuat serialisasi formulir, dll.
Ini telah diuji pada TinyMCE 4.0
Demo berjalan di: http://jsfiddle.net/9euk9/49/
Pembaruan: Kode di atas telah diperbarui berdasarkan komentar DOOManiac
sumber
tinemce.triggerSave()
memanggilsave()
fungsi untuk SEMUA editor aktif Anda. Jika Anda memiliki lebih dari satu, akan lebih efisien untuk menyetel fungsi onChange Anda seperti ini:editor.on('change', editor.save);
Dari TinyMCE, jQuery dan formulir Ajax :
sumber
Itu karena ini bukan lagi textarea. Ini diganti dengan iframe (dan yang lainnya), dan fungsi serialize hanya mendapatkan data dari kolom formulir.
Tambahkan bidang tersembunyi ke formulir:
Sebelum memposting formulir, dapatkan data dari editor dan letakkan di bidang tersembunyi:
(Editor tentu saja akan mengurus ini sendiri jika Anda memposting formulir secara normal, tetapi saat Anda menyalin formulir dan mengirim data sendiri tanpa menggunakan formulir, acara onsubmit pada formulir tidak pernah dipicu.)
sumber
Saat Anda menjalankan ajax pada formulir Anda, Anda perlu memberi tahu TinyMCE untuk memperbarui textarea Anda terlebih dahulu:
sumber
Saya menggunakan:
Hanya ini yang perlu Anda lakukan.
sumber
Ini akan memastikan bahwa konten disimpan saat Anda kehilangan fokus pada area teks
sumber
sumber
Anda juga dapat menggunakan plugin jQuery dan paket untuk TinyMCE yang menyelesaikan masalah semacam ini.
sumber
Saya mengalami masalah ini untuk sementara waktu dan
triggerSave()
tidak berhasil, begitu pula metode lainnya.Jadi saya menemukan cara yang berhasil untuk saya (Saya menambahkan ini di sini karena orang lain mungkin sudah mencoba triggerSave dan lain-lain ...):
Saat Anda mengirimkan formulir Anda atau apa pun yang harus Anda lakukan adalah mengambil data dari pemilih Anda (Dalam kasus saya :)
.tinymce
menggunakan$('.tinymce').text()
.sumber
@eldar: Saya mengalami masalah yang sama dengan 3.6.7 yang berjalan dalam 'mode normal'; dan triggerSave atau save () tidak bekerja.
Saya berubah ke plugin jQuery TinyMCE dan tanpa harus melakukan apa pun itu berfungsi sekarang. Saya berasumsi di suatu tempat di sepanjang garis mereka menerapkan semacam triggerSave otomatis untuk versi jQuery dari TinyMCE.
sumber
tinyMCE.triggerSave()
sebenarnya berfungsi dengan baik untuk saya dalam mode normal. Tetapi Anda benar bahwa sudah ada semacam penyimpanan otomatis dalam mode jquery, yang bertentangan dengan tinymce.com/wiki.php/Plugin:autosave : "Plugin ini kemungkinan besar akan diperpanjang di masa mendatang untuk menyediakan dukungan penyimpanan otomatis AJAX."Saya hanya menyembunyikan () tinymce dan mengirimkan formulir, nilai textarea yang diubah hilang. Jadi saya menambahkan ini:
Ini bekerja untuk saya.
sumber
tinyMCE.triggerSave();
tampaknya jawaban yang benar, karena ini akan menyinkronkan perubahan dari iFrame ke textarea Anda.Untuk menambah jawaban lain - mengapa Anda membutuhkan ini? Saya telah menggunakan tinyMCE untuk sementara waktu dan tidak mengalami masalah dengan bidang formulir yang tidak berhasil. Setelah beberapa penelitian, ternyata itu adalah "penambalan otomatis" pengiriman elemen formulir, yang diaktifkan secara default - http://www.tinymce.com/wiki.php/Configuration3x:submit_patch
Pada dasarnya, mereka mendefinisikan ulang
submit
untuk memanggiltriggerSave
sebelumnya, tetapi hanya jikasubmit
belum didefinisikan ulang oleh yang lain:Jadi, jika ada hal lain dalam kode Anda (atau pustaka pihak ketiga lainnya) yang bermasalah
submit
, "penambalan otomatis" mereka tidak akan berfungsi dan Anda perlu memanggiltriggerSave
.EDIT: Dan sebenarnya dalam kasus OP,
submit
tidak dipanggil sama sekali. Karena itu ajax, ini melewati "tambalan otomatis" yang dijelaskan di atas.sumber
Pertama-tama:
Anda harus menyertakan plugin tinymce jquery di halaman Anda (jquery.tinymce.min.js)
Salah satu cara termudah dan teraman adalah menggunakan
getContent
dansetContent
dengan triggerSave. Contoh:sumber