我正在使用jquery-ui的自动完成来搜索感兴趣的字符串,方法是将数据发送到服务器并获取匹配项。问题是,一旦我开始输入,结果开始进入(如console.log中所示),我无法继续输入,因为输入被锁定(无论我输入什么类型都不再显示)。这可能是因为数据量很大。我可以增加自动完成行为的最小长度,但这可以帮助临床医生从近15,000个结果中搜索诊断,并获得有用的提示。
我的问题是,因为在服务器端,php似乎行动得足够快,如何在不锁定键盘输入的情况下使javascript处理这些数据?
$('body').on('focus', '#Diagnosis', function(){
$(this).autocomplete({
minLength: 5,
autoFocus: true,
source: function(request, response) {
if (searchRequest !== null) {
searchRequest.abort();
}
searchRequest = $.ajax({
url: 'searchicd.php',
method: 'post',
dataType: "json",
data: {term: request.term},
success: function(data) {
console.log(data);
MyArray=data;
searchRequest = null;
response($.map(data.Disease, function(item, index) {
console.log(item);
return {
value: item,
label: item + "(" + data.Code[index] + ")"
};
}));
}
}).
fail(function() {
searchRequest = null;
});
},
select: function( event, ui ) {
}
});
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input type="text" class="form-control ui-autocomplete-input" id="Diagnosis" aria-describedby="" placeholder="Diagnosis" autocomplete="off">