【问题标题】:Insert smiley at cursor position在光标位置插入笑脸
【发布时间】:2015-07-20 09:52:06
【问题描述】:

我正在制作一个项目,用户可以点击笑脸并将它们插入到 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

【问题讨论】:

标签: javascript jquery html css


【解决方案1】:

首先:插入右边的三个元素之一:

您正在使用表达式#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

【讨论】:

  • 我刚刚对你的解决方案做了一些修改。jsfiddle.net/x6ud5wxt/4
  • 谢谢@steven。但我不知道如何获得光标位置。另外,如果我有多个笑脸,我将如何管理它们。你能给我一个想法吗
  • 我试过你的代码。我想知道当我在第一个 div 中插入笑脸时,笑脸很小,但在其他 div 中,它变得更大。 @史蒂文·帕林卡斯
  • 您在 CSS 中的声明:#text img { width: 50px; } 可以更正为所有可编辑的 div .editable img { width: 50px; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2010-11-22
相关资源
最近更新 更多