我不太确定这是我的代码问题还是 Summernote 中的错误。以为我会在这里发帖,看看其他人是否有这个问题......
我有一个用于编辑表单的 Bootstrap 模式。当模式被激活时,它会从 mySQL 中提取内容并填充模式中的表单字段。如果我更改 textarea 中的文本并单击Submit
,它会正常工作:新的更新文本将发送到服务器。但是,如果我将 Summernote 添加到该文本区域并单击提交 OLD,则将原始文本而不是新的更新文本发送到服务器。
这是我将 Summernote 附加到动态模式的代码。Summernote 编辑器确实出现在模式中,我没有收到任何 javascript 错误。
$('#modal-edit-post').on('shown.bs.modal', function() {
if($('.summernote-edit').length > 0){
$('.summernote-edit').summernote({
toolbar: [
['style', ['bold', 'italic', 'underline', 'strike']],
['para', ['ul', 'ol']],
],
styleWithSpan: false,
onpaste: function(e) {
var thisNote = $(this);
var updatePastedText = function(someNote){
var original = someNote.code();
var cleaned = CleanPastedHTML(original);
someNote.code('').html(cleaned);
};
setTimeout(function () {
//this kinda sucks, but if you don't do a setTimeout,
//the function is called before the text is really pasted.
updatePastedText(thisNote);
}, 10);
}
});
}
});
这是我用来处理提交的
$('#form-edit-post').submit(function(e) {
var form = $(this);
var formdata = false;
if(window.FormData){
formdata = new FormData(form[0]);
}
var id = 'edit-post';
var formAction = form.attr('action');
// testing to see the changes...
var dd = form.serialize();alert(dd);return false;
if($(this).valid()) {
$('#form-edit-post :input').attr('disabled', true);
$.ajax({
type : 'POST',
url : '/assets/ajax/post.php',
cache : false,
data : formdata ? formdata : form.serialize(),
contentType : false,
processData : false,
dataType : 'json',
success: function(response) {
if(response.status == 'success') {
modalSuccessMessage(id,'Your changes were saved');
} else {
modalErrorMessage(id,response.message);
}
$('#form-edit-post :input').attr('disabled', false);
},
});
}
e.preventDefault();
});
不确定这是否相关,但这就是我提取动态内容的方式。
$('.edit-post').click(function(e) {
var id = $(this).data('id');
var data = 'id=' + id;
$.get('/assets/ajax/get-post-edit.php?id=',data, function(response) {
if(response != 'fail') {
$('#content-edit-post').html(response);
$('#modal-edit-post').modal('show');
}
});
e.preventDefault();
});