我使用jquery自动完成功能从文本类型输入中的数据库中提取数据。
如果查询在前2个字符后没有返回任何数据,我设法自动删除了最后一个字符。但是如何在删除字符后重新运行查询?
这是我的剧本:
<script type="text/javascript">
$(function() {
$("#field").autocomplete({
source: function(request, response) {
$.ajax({
method: "GET",
dataType: "json",
url: "<?php echo URL; ?>/librerie/autocomplete.php",
data: { what: "type", term: request.term},
success: function(data) {
response(data);
},
error: function() {
response([]);
}
})
.then( function(response) {
if (response == "") {
$("#field").val( function(index, value) {
return value.substr(0, value.length - 1);
})
}
});
},
delay: 500,
minLength: 2
});
});
</script>
答案 0 :(得分:0)
您需要将整个自动完成调用封装到自动执行的命名函数中。然后,您可以在需要时以递归方式调用函数。
$(function () {
(function doAutoComplete(){
$("#field").autocomplete({
source: function (request, response) {
$.ajax({
method: "GET",
dataType: "json",
url: "<?php echo URL; ?>/librerie/autocomplete.php",
data: { what: "type", term: request.term },
success: function (data) {
response(data);
},
error: function () {
response([]);
}
}).then(function (response) {
if (response === "") {
$("#field").val($("#field").val().substr(0, value.length - 1));
doAutoComplete(); // Call function recursively again
}
});
},
delay: 500,
minLength: 2
});
})(); // Automatically invoke function
});