2015-07-20 111 views
2

我正在制作一个项目,用户可以点击表情符号并将它们插入contenteditable div。在光标位置插入笑脸

  1. 我想要三个div,无论我是什么div,笑脸都应该插入该div。
  2. 另外,这里的问题是笑脸只能插在div的末尾。我希望笑脸只能进入光标所在的位置。

注意:请检查表情符号的大小应该在所有div中保持相同。

<div id="text_wrapper"> 
    <div id="text" contentEditable="true" hidefocus="true"></div> 
</div> 
<div id="text_wrapper"> 
    <div id="text1" contentEditable="true" hidefocus="true"></div> 
</div> 
<div id="text_wrapper"> 
    <div id="text2" contentEditable="true" hidefocus="true"></div> 
</div> 
<span id="button">Add Emoji</span> 

$("#button").click(function() { 
    $("#text").append('<img src="https://cdn.okccdn.com/media/img/emojis/apple/1F60C.png"/>'); 
}); 


Demo

+0

你的问题不清楚..请详细说明。 –

+0

要获得contentEditable元素中的光标位置,您可以查看下面的问题:http://stackoverflow.com/questions/4767848/get-caret-cursor-position-in-contenteditable-area-containing-html-content – maja

+1

使用focusin事件来设置当前div(请参阅https://jsfiddle.net/x6ud5wxt/3/)。另请参阅http://stackoverflow.com/questions/1181700/set-cursor-position-on-contenteditable-div了解如何在添加笑脸后控制光标位置。 –

回答

4

第一:插入到右侧的三个元素中的一种:

您正在使用表达式#text它是指第一个可编辑的div。

如果您想将目标锁定在最后一个焦点上,您可以使用这些类。

添加一个类,所以你可以很容易地瞄准其中的任何

<div id="text_wrapper"> 

    <div id="text" class="editable" contentEditable="true" hidefocus="true"></div> 

</div> 

<div id="text_wrapper"> 

    <div id="text1" class="editable" contentEditable="true" hidefocus="true"></div> 

</div> 

<div id="text_wrapper"> 

    <div id="text2" class="editable" contentEditable="true" hidefocus="true"></div> 

</div> 

<span id="button">Add Emoji</span> 

,那么你可以很容易地决定在哪里,重点是与单个事件侦听器

$(document).on("click focusin" , ".editable" , function(){ 

    $(".editable").removeClass("focus"); 
    $(this).addClass("focus"); 

}); 

从这一点来说,关注的项目(带有光标的项目)将具有类“.focus”。

现在,您可以使用

$(document).on("click" , "#button" , function() { 

    $(".editable.focus").append('<img src="https://cdn.okccdn.com/media/img/emojis/apple/1F60C.png"/>'); 

}); 




二:插入在光标

的位置,这似乎是有点更多 复杂,但有相当干净的方法。看看this topic

+1

我刚刚提出了解决方案。 https://jsfiddle.net/x6ud5wxt/4/ –

+0

谢谢@steven。但我没有得到如何获得光标位置。另外,如果我有多个表情符号,我将如何管理它们。你可以给我一个想法 –

+0

我试过你的代码。我想知道当我在第一个div中插入笑脸时,笑脸很小,但在其他divs中,它变得更大。 @steven palinkas –