так основная схема ...форма должна быть представлена дважды перед отправкой обновленные данные
У меня есть «сообщения» вытащил из базы данных и отображаются следующим образом:
<div class="blogtest">
<form action="process/updatepost.php" class="updatepost" method="post">
<input type="button" class='.$editenabled.' value="Edit">
<input type="submit" class="saveupdatebutton" value="Save">
<input type="hidden" class="postid" name="postid" value="'.$postID.'">
<div class="text">
<div class="buildtext">'.$text.'</div>
<div class="editor"><textarea name="ckeditor"id="ckeditor" class="ckeditor">'.$text.'</textarea></div>
</div>
</form>
</div>
После нажатия кнопки редактирования щелкнул , класс buildtext скрывается и отображается ckeditor. То же самое для кнопки редактирования и сохранения.
Когда нажата кнопка «Сохранить», вызывается запрос ajax, после чего данные обновляются. Это работает отлично ... однако он работает только отлично, если на этой странице есть только 1 сообщение в блоге.
Здесь Ajax для справки:
$(document).ready(function(){
$(".updatepost").submit(function(){
var $targetForm = $(this);
$targetForm.find(".error").remove();
$targetForm.find(".success").remove();
// If there is anything wrong with
// validation we set the check to false
var check = true;
// Get the value of the blog update post
var $ckEditor = $targetForm.find('.ckeditor'),
blogpost = $ckEditor.val();
// Validation
if (blogpost == '') {
check = false;
$ckEditor.after('<div class="error">Text Is Required</div>');
}
// ... goes after Validation
if (check == true) {
$.ajax({
type: "POST",
url: "process/updatepost.php",
data: $targetForm.serialize(),
dataType: "json",
success: function(response){
if (response.databaseSuccess)
$targetForm.find(".error").remove();
else
$ckEditor.after('<div class="error">Something went wrong!</div>');
}
});
}
return false;
});
});
Итак, если на странице есть 2 сообщения в блоге, и я редактирую второй (последний) пост, при нажатии «Сохранить пост» правильно обновляется.
Однако, если я редактирую любой другой, тогда для отправки данных требуется два отправления.
Я проверил на firebug, и он показывает, что при первом щелчке старое значение отправляется, а затем на второе - новое.
Где я иду не так?
В конце концов (после работы) сообщение будет обновлено при успешном вызове ajax, но на данный момент его очевидно жизненно важно, что пользователю нужно только нажать сохранить один раз.
Спасибо за помощь! Вам понадобится еще какой-нибудь код и плохой пост.
Craig :)
EDIT: После того, CKEditor просто нормальный текстовое поле он работает отлично. Должно быть, ckeditor не обновляется, поскольку я знаю, что он не работает как текстовая область как таковая. Может быть, придется использовать другой богатый редактор ...
0 Я видел эту часть кода, плавающей вокруг, но никогда не работает/я не могу ее понять Здесь нормально, что я использую: \t вар $ CKEditor = $ targetForm.find ('CKEditor'), \t Блогпост = $ ckEditor.val(); Вы можете создать что-то из того, что может помочь мне понять это? – craig
Как вы создаете экземпляры CKEditor? все ли у них разные пользовательские идентификаторы, или все они называются «ckeditor»? –
все называются ckeditor, потому что они выходят из базы данных в foreach – craig