javascript - 如何从 contenteditable div 中提取文本(但不是 html 标签)

标签 javascript jquery html css

<div class="col-sm-9">
  <div contenteditable type="text" id="inputEmailTo" class="form-control" placeholder="Recipients"></div>
</div>

<script>
  $(document).on('keyup', '#inputEmailTo', function (e) {
    if (e.keyCode == 13) {
      e.preventDefault();
      console.log($(this).text());
      var recipient = $(this).text(); // How can I extract just the text and not any appended <span>s
      $(this).text(''); // And how can I remove them
      $(this).append('<span class="recipient">'+recipient+'</span>');
    }
  });
</script>

忽略随机 type="text"和占位符,因为它曾经是 <input>我可能最终会把它改回来 - 我希望每次按下回车键时将 contenteditable div 中的文本“转换”(由于缺乏更好的词)到 div 中的 html 元素。

我真正想要实现的是类似于 GMail 收件人列表的功能。

我完全相信有更好的方法可以做到这一点 - 绝对愿意接受建议。不过我仍然对标题中指定的问题感到好奇。

其他想法

我还考虑过将额外的元素作为同级元素附加到 <input>元素并使用 css 对其进行样式设置,以便将额外的元素叠加在输入字段上,然后动态调整 padding-left输入框的属性。

抱歉,这篇文章有点困惑,本质上是两个问题聚集在一起 - 我应该如何在 stackoverflow 上问这些问题?它们应该是两个单独的问题吗?

最佳答案

我不确定这是否算作答案(因为无论如何您都建议这样做),但我建议您将“最终确定”的电子邮件地址放在可编辑 div 之外的自己的框中,并调整填充/边距/必要时可编辑的位置(这也是 GMail 所做的)。然后您不必担心忽略已添加的元素而仅提取新文本;他们已经分开了。

<div class="col-sm-9">
  <div id="finalizedAddresses"></div>
  <div contenteditable type="text" id="inputEmailTo" class="form-control" placeholder="Recipients"></div>
</div>

 

$(document).on('keyup', '#inputEmailTo', function (e) {
  if (e.keyCode == 13) {
    e.preventDefault();
    console.log($(this).text());
    var recipient = $(this).text();
    $(this).text('');
    $('#finalizedAddresses').append('<span class="recipient">'+recipient+'</span>');
  }
});

关于javascript - 如何从 contenteditable div 中提取文本(但不是 html 标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21767267/

相关文章:

c# - 如何在 asp.net 中使用 javascript 获取选定复选框列表项的值

javascript - 如何从 Meteor.js 中重启 Meteor 服务器

javascript - 将不同的 CSS 规则添加到一组生成的元素中

java - 如何让 PJAX 在按钮和链接上工作?

javascript - 为单独的 div 创建 onmouseover 函数

javascript - 打开和关闭更新 Html.TextBoxFor "readonly"属性

javascript - 向 slider 添加声音

jQuery自动元素定位

html - Internet Explorer Quirks 模式下的 Iframe 不会以 100% 宽度呈现

javascript - 在移动设备上隐藏 <image> 的最佳方法是什么?