#jquery #html #ckeditor
#jquery #HTML #ckeditor
Вопрос:
Это мой код:
<div class="cmt-container" >
<div class="new-com-bt">
<span>Write an answer ...</span>
</div>
<div class="new-com-cnt">
<input type="text" id="name-com" name="name-com" value="" style="width: 150px;" placeholder="Your name" />
<input type="email" id="mail-com" name="mail-com" value="" style="width: 150px;" placeholder="Your e-mail adress" />
<textarea class="the-new-com" id="ckeditor_id" name="ckeditor_id" placeholder="Your answer"> </textarea>
<div class="bt-add-com" style="margin-top: 10px;">Post answer</div>
<div class="bt-cancel-com" style="margin-top: 10px;">Cancel</div>
</div>
<div class="clear_comment"></div>
</div>
<script>
CKEDITOR.replace( 'ckeditor_id' );
</script>
<script type="text/javascript">
$(function(){
$('.new-com-bt').click(function(event){
$(this).hide();
$('.new-com-cnt').show();
$('#name-com').focus();
});
$(".bt-add-com").css({opacity:1});
$('.bt-cancel-com').click(function(){
CKEDITOR.instances['ckeditor_id'].setData('');
$('.new-com-cnt').fadeOut('fast', function(){
$('.new-com-bt').fadeIn('fast');
});
});
$('.bt-add-com').click(function(){
var theName = $('#name-com');
var theMail = $('#mail-com');
if( !CKEDITOR.instances['ckeditor_id'].getData() ){
alert('You need to write an answer!');
}else{
$.ajax({
type: "POST",
url: "http://www.mywebsite.com/add-answer.php",
data: 'act=add-comamp;id_post=' <?php echo $id_post; ?> 'amp;name=' theName.val() 'amp;email=' theMail.val() 'amp;comment=' CKEDITOR.instances['ckeditor_id'].getData(),
success: function(html){
CKEDITOR.instances['ckeditor_id'].setData('');
theMail.val('');
theName.val('');
$('.new-com-cnt').hide('fast', function(){
$('.new-com-bt').show('fast');
$('.new-com-bt').before(html);
})
}
});
}
});
});
</script>
Моя проблема в том, что когда пользователь публикует фотографию, а затем нажимает два раза подряд кнопку ввода, текст вырезается сразу после изображения.
Например:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ac rhoncus mauris, nec porta dui. Curabitur a turpis et dolor pulvinar blandit. Mauris porta vestibulum odio vel scelerisque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer consectetur sem vitae urna malesuada, ut ullamcorper justo interdum. Donec in vestibulum libero. Nunc ornare pellentesque turpis quis accumsan. Donec orci dui, condimentum convallis nunc et, lacinia accumsan quam.
(2 строки пробела)
изображение
(2 строки пробела)
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ac rhoncus mauris, nec porta dui. Curabitur a turpis et dolor pulvinar blandit. Mauris porta vestibulum odio vel scelerisque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer consectetur sem vitae urna malesuada, ut ullamcorper justo interdum. Donec in vestibulum libero. Nunc ornare pellentesque turpis quis accumsan. Donec orci dui, condimentum convallis nunc et, lacinia accumsan quam.
В приведенном выше примере первый абзац и изображение будут вставлены в базу данных, а второй — нет.
Это плохо для моего сайта. Есть идеи, как это исправить?
Спасибо
Комментарии:
1. Каков точный вывод
CKEDITOR.instances[ 'ckeditor_id' ].getData()
?2. Если пользователь включает изображение, а затем нажимает кнопку ввода два раза подряд, текст, который загружается на сервер, вырезается сразу после изображения. Во всех остальных случаях вывод написанного вами кода идентичен тому, что пишет пользователь.
Ответ №1:
Это делает не ckeditor.getData () . В самом запросе POST дата разделяется из-за двух двойных «вводов».Используйте encodeURIComponen(CKEDITOR.instances['ckeditor_id'].getData())