我有一个可编辑的div,它应该在键入时替换表情符号键。 还有一个隐藏的textarea,应该有原始数据,但我不知道这应该如何工作。 我用这个library 我的jquery代码:
$('#acompose_message').keyup(function() {
val = $('#acompose_message').html();
document.getElementById('compose_message').innerHTML = val;
emotifyVal = emotify(val);
$('#acompose_message').html(emotifyVal);
});
'#acompose_message'是可编辑的div,'#compose_message'是隐藏的div
答案 0 :(得分:1)
您似乎是js的新手。但这不是我们的问题。你想用表情符号构建一个聊天系统。也不是问题。你需要重新考虑你的方法。
on-enter
事件以将消息发送给其他客户端。总结一下。 使用这样的Ready HTML表情符号:
<div style="color: red; font-size: 18px; font-family: sans-serif;">😀 </div>
用户可以从弹出按钮中选择一个表情符号:这是一个图像示例:
这是一个典型的js代码:
表情按钮:
$('#emonicons').click(function() {
if (emojis_isShown) {
$('.spawn-emonicons').fadeOut(300);
emojis_isShown = false;
}
else {
$('.spawn-emonicons').fadeIn(300);
emojis_isShown = true;
}
});
对于实际图标:
$('.ico').click(function() {
var value = $(this).text();
var input = $('#message-sender');
input.val(input.val() + value + ' ');
});
在第二个代码中,当用户按下他想要的图标时,图标将被转移到ID为message-sender
的输入文本。
现在要处理按键输入,它将发送您的消息,您可以在JS中使用以下伪函数。
$('#message-sender').bind('keydown', function (event) {
if(event.which === 13) {
emojis_isShown = false;
$('.spawn-emonicons').hide();
var msg = $(this).val();
var newdiv1 = '<div class="whatever">'+msg+'</div>'
$( newdiv1 ).insertAfter( $( ".message" ).last());
}
});
上面的代码读取了所有的按键,当按下键13(输入)时,隐藏表情符号窗口。使用您键入的消息创建一个新div并将其发送到前端。 您还应该考虑使用Ajax将消息发送到“另一方”(Ops我的意思是客户端)。
如果我无法帮助你,我深感抱歉。聊天室系统是一项教学任务,不推荐给新程序员(谁说那个???)
我能给你的最后一个想法是我在dreamincode.com
上发现的关于构建简单聊天框的教程。从那开始。随着时间的推移,当您成为更好的程序员时,您将找到您寻求的解决方案!
教程(一个非常好的教程): Simple Text Chat Box
答案 1 :(得分:1)
现在我几乎解决了我的问题:
var emotifyText = function(e) {
var caretPosition = getCaretPosition(this);
var images = [];
var i = 0;
val = $('#acompose_message').html();
var emotifyVal = emotify(val);
$('#acompose_message').html(emotifyVal);
$.each($('#acompose_message img'), function(index){
console.log(i);
$(this).replaceWith(function(){
return jQuery.inArray( $(this).attr('src'), jsonIcons );
});
i++;
});
val = $('#acompose_message').html();
var emotifyVal = emotify(val);
$('#compose_message').val(val);
$('#acompose_message').html(emotify(val));
};
但是$(this).replaceWith(function(){
的行不起作用,现在我的问题是,有人知道我怎么能用另一个字符串替换我的div中的每个img?