javascript - 如何使 Jquery UI 自动完成功能适用于内容可编辑 div 的子元素?

标签 javascript jquery jquery-ui autocomplete jquery-ui-autocomplete

我有一个内容可编辑的 div ,其中的 span 子元素也是内容可编辑的。自动完成建议似乎适用于父元素,但不适用于子元素。这是使用 jquery ui 的自动完成小部件。

HTML:

<div id="main" contenteditable="true">
    <span id="sub" contenteditable="true"></span>
</div>

JS:
如果我将自动完成设置为父项,则此方法有效 -
$('#main').autocomplete({ source = ["Tomato", "Potato", "Peas"]});

但是,这似乎对 child 不起作用 -
$('#sub').autocomplete({ source = ["Tomato", "Potato", "Peas"]}) ;

注意:我知道我正在 span 标签内输入内容,因为我使用一些 javascript 将插入符号移动到标签中。

我希望仅针对跨度显示建议,因为我正在尝试实现类似于 Facebook 评论系统的标记系统。预先感谢您的帮助。

最佳答案

可能不是最好的示例,但您可以在此处看到 main2main1 的工作方式有何不同:

https://fiddle.jshell.net/Twisty/o1f0wuph/

HTML

<div id="main1" contenteditable="true">
  Type Here parent suggestions
  <span contenteditable="true"></span>
</div>

<div class="main2-wrapper">
  <div id="main2" contenteditable="true" data-value="" data-placeholder="Type Here">
  </div>
</div>

CSS

#main1 {
  background-color: blue;
  display: block;
}

.main2-wrapper {
  background-color: red;
  display: block;
  margin: 3px;
  width: 300px;
  position: relative;
}

jQuery

$(function() {
  var stuff = [
    "Tomato",
    "Potato",
    "Peas"
  ];
  $('#main1').autocomplete({
    source: stuff
  });
  $("#main2").text($("#main2").data("placeholder"));
  $("#main2").blur(function() {
      var v = $(this).text();
      var p = $(this).data("placeholder");
      $(this).data("value", v);
      if (v === "") {
        $(this).text($(this).data("placeholder"));
      }
    })
    .focus(function() {
      if ($(this).text() == $(this).data("placeholder")) {
        $(this).text("");
      }
    })
    .autocomplete({
      source: stuff,
      minLength: 3
    });
});

无论您使用 div 还是 span,都没有关系,我只是更喜欢 div。我将样式应用到 wrapper 上。我不确定打字时是否应该保留背景颜色。

我添加了一些内容,使其更像一个文本字段,它清除了文本以允许用户输入文本。 可能会返回并仅对占位符文本执行此操作,这样就不会删除他们之前输入的任何内容。

关于javascript - 如何使 Jquery UI 自动完成功能适用于内容可编辑 div 的子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38501602/

相关文章:

javascript - 如何安排 javascript 对象以获得更好的性能

javascript - 每 15 秒运行一次 jquery 函数

javascript - 如何使用嵌套按钮获取 <li> 的文本值?

jquery - 找出是否使用 JQuery 检查了单选按钮?

javascript - jQuery Sortable - 取消并恢复未按预期工作

javascript - React 16.3 类方法与构造函数方法

javascript - 如何在 dojo 中获取选中的组合框

javascript - 在控制流之外调用的函数?

javascript - 在另一个 Ajax 请求中处理多个 Ajax 请求

jquery - 从一个列表中拖放 jQuery UI 可拖动元素并将其放入另一个列表中的问题