我的项目中要求为文本框提供自动填充功能,例如最近在Google上应用的文本框。我需要在每个按键上获取数据,所以我在按键上调用了jQuery函数。问题是自动完成功能是在文本框中单击鼠标而不是在按键时触发的。我将附上代码片段,以更好地理解这样的问题

$(document).keypress(function(){
    lastKey = String.fromCharCode(window.event.keyCode);
    alert('lastKey :: ' + lastKey);
    var txtVal = document.frm.selectedTechParamName.value + lastKey;
    alert('txtVal :: ' + txtVal);
    $("#suggestTechParamName").autocomplete('/AEA-Authoring/TechnicianParameterAutocomplete?userAction=getTechParamsForSvcLvlDataID&txtVal=' + txtVal, {
        matchContains: true,
        minChars: 0,
        cacheLength:0,
        maxItemsToShow:10
    });
});


现在发生的事情是,当按下任意键时,警报可以正常工作,但是功能的后半部分即

$("#suggestTechParamName").autocomplete('/AEA-Authoring/TechnicianParameterAutocomplete?userAction=getTechParamsForSvcLvlDataID&txtVal=' + txtVal, {
    matchContains: true,
    minChars: 0,
    cacheLength:0,
    maxItemsToShow:10
});


当我们单击文本框时被调用。另外,正如您所看到的,我编写的属性“ cacheLength:0”是因为我不希望自动完成功能缓存任何数据,但这似乎也不起作用。

最佳答案

看来您正在使用JQuery plugin实现此目的。我使用相同的插件,每按一个键,它将向服务器发送一个新的Ajax请求。

您提到要根据docscacheLength设置为0,该值必须为>= 1。您是否尝试过更改以查看其是否更改了行为?

编辑1:此外,根据文档,看来matchContains: true仅在您具有cacheLength > 1时才有用(cacheLength = 1表示不进行缓存,默认值为cacheLength = 10)。

10-08 08:20