在我的项目中,我正在尝试使用以下插件创建自动完成效果:
这个插件工作正常,直到我没有在我的文本框中添加空格(添加一个单词之后)。当我只是使用退格键删除输入的单词时,自动完成显示之前应该显示的前一个列表。
PS:每次我通过 ajax 调用将文本字段的全文传递给服务器时,这在我的应用程序中是必需的。
这是我的代码:
JS Fiddle(由于 ajax url 而无法工作)
JS
$(function () {
var result = $('#result');
var contents = {
value: "",
data: ""
};
/* Ajax call */
result.keydown(function (event) {
if (!event.shiftKey) {
var sugData;
var text = result.val(); //.split(" ").pop();
//console.log(text);
/* Send the data using post and put the results in a div */
$.ajax({
url: "http://localhost:9999/projects/1/autocomplete/suggestions",
type: "POST",
data: "drqlFragment=" + text, // + " ",
//data: "drqlFragment=when node_database_property ",
async: false,
cache: false,
headers: {
accept: "application/json",
contentType: "application/x-www-form-urlencoded"
},
contentType: "application/x-www-form-urlencoded",
processData: true,
success: function (data, textStatus, jqXHR) {
var resData = data.suggestions;
//console.dir(resData);
for (var i = 0; i < resData.length; i++) {
resData[i].value = resData[i].keyword;
}
sugData = resData;
//console.dir(sugData);
},
error: function (response) {
//console.dir(response);
$("#result").val('there is error while submit');
}
});
console.dir(sugData);
$('#result').autocomplete({
lookup: sugData
});
}
});
});
HTML
<form id="foo">
<textarea id="result" rows="4" cols="50"></textarea>
<input type="submit" value="Send" />
</form>
抱歉,我无法为您提供 json 数据,因为每当我按键时它都会被服务器修改。(因此,实际上它是服务器在 ajax 调用时返回的对象变量)。