好的,我正在和我一起工作。这是textarea受影响的代码:
<div class="chat">
<div class="messages"></div>
<textarea class="entry" name="entry" placeholder="Welcome to the Chat. Enter your message here!"></textarea>
<script type="text/javascript">
editor = CKEDITOR.replace('entry');
</script>
</div>
这是我的chat.js文件的代码,它调用聊天的所有功能:
var chat = {}
chat.fetchMessages = function () {
$.ajax({
url: 'ajaxchat.php',
type: 'post',
data: {
method: 'fetch'
},
success: function (data) {
$('.chat .messages').html(data);
}
});
}
chat.throwMessage = function (message) {
if ($.trim(message).length != 0) {
$.ajax({
url: 'ajaxchat.php',
type: 'post',
data: {
method: 'throw',
message: message
},
success: function (data) {
chat.fetchMessages();
chat.entry.val('');
}
});
}
}
chat.entry = $('.chat .entry');
chat.entry.bind('keydown', function (e) {
if (e.keyCode === 13 && e.shiftKey === false) {
chat.throwMessage($(this).val());
e.preventDefault();
}
});
chat.interval = setInterval(chat.fetchMessages, 5000)
chat.fetchMessages();
现在所有这些代码都正常工作,但返回键未被捕获以提交消息。不知道我还需要做什么。 CKeditor将输入/返回键解释为新段落,我需要它来提交消息数据。
答案 0 :(得分:1)
如果我正确理解了问题,那么问题在于事件。您不会绑定CKEditor之类的事件。它没有直接使用textarea元素,它做了一些魔术技巧并创建了一个iframe并拥有自己的事件处理系统。要附加到13键事件,请执行以下操作
CKEDITOR.on('instanceReady', function(ev) {
var editor = ev.editor;
editor.on('key', function(evt) {
if (evt.data.keyCode === 13) {
// do your enter handling here
}
}
}
在相关的说明中,获得这样的价值也有点奇怪。它真的有效吗?我会改变那个更像CKEditor的
CKEDITOR.instances.entry.getData();