使用ajax的jquery-ui自动完成锁定键盘输入

时间:2018-03-14 00:43:43

标签: javascript jquery jquery-ui-autocomplete

我正在使用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">

0 个答案:

没有答案