日期:2014-05-16  浏览次数:20387 次

高分求高手,jquery的autocomplete如何自定义触发事件?
想知道autocomplete如何自定义触发事件,如下列js代码,输入3个字符后会触发这个事件去后台检索,但我不想这样触发,因为频繁检索对数据库压力太大,我想比如页面上加个按钮,输入完id后(3个或4,5个字符后),点击按钮触发自动完成功能,该怎么做呢,需要改造jquery.autocomplete.js吗?请详细告知。



function cqlautocompleteCodeType(codeTypeFieldId,url)
{
$("#"+codeTypeFieldId).autocomplete(url,
{
delay:10,
minChars:3,
cacheLength:2,
scroll:true,
dataType:'json',
multiple:false,
mustMatch:true,
parse:function(data){
var parsed=[];
for(var i=0;i<data.length;i++) 
{
parsed[parsed.length]={
data:data[i],
value:data[i].codetype,
result:data[i].codetype
};
}
return parsed;
},
formatItem:function(data){
return data.codetype;
},
formatResult:function(data){
return data.codetype;
},
autoFill:true
}).result(function(event, data, formatted)
{
if(data)
{
$("#"+codeTypeFieldId).val(data.codetype);
}
});
}

------解决方案--------------------
可以:
添加一个button的onclick事件 onclick="lookupAjax();"

编写lookupAjax();
function lookupAjax(){
var oSuggest = $("#id")[0].autocompleter;

oSuggest.findValue();

return false;
}

//参看 http://www.pengoworks.com/workshop/jquery/autocomplete.htm


------解决方案--------------------
改造是最好的办法了。。找到注册的keydown或者keyup事件取消掉,做成一个过程,并取消字符字数检查现在,提供给外部调用,外部调用这个函数就好了
------解决方案--------------------
调用时加多个参数
rel:{target:$('#mybtn'),event:'click'}
target:一个jquery对象,我这里举例传的是一个id=mybtn的按钮
event:触发事件的方式。我举的例子里面传的是:click。你也可以mouseover之类的