Mam następujący formularz:
<form method="post" action="example.com" id="form">
<textarea id="content">{{$content_from_database}}</textarea>
<button type="submit">Update</button>
</form>
używam tinymce editor
wewnątrz formularza:
tinymce.init({
selector:"textarea#content"
});
Po kliknięciu przycisku przesyłania po aktualizacji treści:
$("textarea#content").val() = "old content"
Treść nadal jest starą treścią.
ZAKTUALIZOWANE
Kod Ajax:
$("#form").on("submit", function() {
$.post(
$(this).prop("action"), {
"content": $("textarea[name=content]").val(),
},
function(d){
console.log(d);
},
"text"
).done(function() {
alert("successful");
}).fail(function(e) {
alert("failed");
});
return false;
});
Jak mogę to naprawić?
Proszę pomóż mi!
Dziękuję Ci bardzo!
Odpowiedzi:
2 dla odpowiedzi № 1Jeśli używasz AJAX do przesłania formularza, musisz użyć tinyMCE.triggerSave()
Wywołanie API, aby TinyMCE zaktualizowało bazę <textarea>
.
Kiedy ładujesz TinyMCE swój oryginał <textarea>
jest faktycznie "ukryty" przez iFrame i inne elementy DOM, które TinyMCE ładuje na stronę. Podczas pisania w TinyMCE edytor nie zachowuje ciągłego <textarea>
zsynchronizowany.
Powołanie tinyMCE.triggerSave()
zmusi redaktora do aktualizacji bazowego <textarea>
a następnie możesz użyć AJAX do przesłania formularza, który zawiera <textarea>
.
Podejrzewam, że będziesz musiał dodać go przed tą częścią kodu, ponieważ wydaje się, że oczekujesz <textarea>
mieć poprawną treść.
$(this).prop("action"), {
"content": $("textarea[name=content]").val(),
}