我的项目中要求为文本框提供自动填充功能,例如最近在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请求。
您提到要根据docs将cacheLength
设置为0
,该值必须为>= 1
。您是否尝试过更改以查看其是否更改了行为?
编辑1:此外,根据文档,看来matchContains: true
仅在您具有cacheLength > 1
时才有用(cacheLength = 1
表示不进行缓存,默认值为cacheLength = 10
)。