【发布时间】:2017-05-23 19:59:33
【问题描述】:
我尝试搜索,但没有找到解决方案。
我目前正在使用 Jquery 自动完成功能,以及一个存储可能返回结果列表的外部服务。自动完成是在 textarea 上完成的,我需要尝试为每一行文本自动完成。所以用户输入一行,自动完成。转到新行,开始输入,自动完成仅针对该行的内容显示。
设置对于 JQuery 所展示的内容来说是相当标准的。即:
<textarea id="entities"></textarea>
JS:
$("#entities").autocomplete({
serviceUrl: [the service url],
paramName: 'prefix'
});
我知道有一些方法可以确定行号并获取特定行的值,例如:
$("#entities").on('keyup', function() {
var textLines = $("#entities").val().substr(0, $("#entities").selectionStart).split("\n");
var currentLineNumber = textLines.length - 1;
console.log(lines[currentLineNumber]);
});
但我不确定如何在键入新行时调用自动完成功能。
编辑:有人建议使用 contentEditable,但这会导致每行的包装器不同,具体取决于浏览器。
<div id="entities" class="entities-text" contenteditable="true"></div>
IE 将每一行转换为:
<p>Line 1</p>
<p>Line 2</p>
FF 节目:
Line 1<br>
Line 2<br>
Chrome 提供:
<div>Line 1</div>
<div>Line 2</div>
【问题讨论】:
-
你是什么意思:“自动完成每一行文本”?你能更好地描述你需要什么吗?
-
例如,假设他们在文本区域中输入。当他们第一次开始输入时,会出现自动完成。他们选择术语。现在用户按下回车键并开始在文本区域的第二行输入。自动完成应该再次出现,但只是为他们在文本区域的第二行输入的任何内容提供建议值。简而言之,textarea 是在 textarea 中搜索每行值的表单的一部分。
标签: javascript jquery jquery-ui autocomplete