修改AutoComplete option

上次为jQuery.AutoComplete加上了提示的功能,详情请访问我的博客:《如何让jquery.Autocomplete支持提示?》,这一次,我需要再给jQuery.autoComplete添加一个onBegin的参数,什么意思呢?
我们知道这个插件有一个extraParams的参数,因为jquery.autoComplete只支持q和limit两个参数,假如有这样的情况,我们需要向服务器提交更多参数怎么办呢,幸好,作者为我们提供一个扩展参数,就是extraParams。extraParams好是好,可是不幸的是,它是一个死的参数,有时候,我们需要提交一个活的参数到服务器。举例说明,比如说我们有一个公司名称的自动完成功能,但我们同时需要向服务器提供一个城市的参数,正常的情况下没有问题。但当城市的名称是由用户选择的时候,就有问题了,也就说,这个城市的名称是根据用户选择而实时变化的,这个时候,现有的jquery.autoComplete就无能为力了。
这个时候我们就要考虑修改修改一下jquery.autoComplete了,我们先看一下代码,代码有一个onChange事件,这是一个解发事件,我们可以在这里添加一个回调函数来解决问题。首先我们要为options中添加一个参数叫onBegin,大致就在400行左右吧,有一行这样的代码:
$.Autocompleter.defaults =
我们在后面添加一段
onBegin: null,
然后我们找到onChange事件,约在226行,代码如下:
function onChange(crap, skipPrevCheck)
在函数时里面添加如下代码:
if (options.onBegin) {
var op = options.onBegin(options);
if (op) {
$.extend(options, op);
}
}
这段代码被修改过后看起来就像这样:
function onChange(crap, skipPrevCheck) {
//2010-01-27 by conis,添加onBegin函数,以便在启动onChange的时候,可以重新设置options
if (options.onBegin) {
var op = options.onBegin(options);
if (op) {
$.extend(options, op);
}
}

//end
if (lastKeyPressCode == KEY.DEL) {
select.hide();
return;
}

var currentValue = $input.val();

if (!skipPrevCheck && currentValue == previousValue)
return;

previousValue = currentValue;

currentValue = lastWord(currentValue);
if (currentValue.length >= options.minChars) {
$input.addClass(options.loadingClass);
if (!options.matchCase)
currentValue = currentValue.toLowerCase();
request(currentValue, receiveData, hideResultsNow);
} else {
stopLoading();
select.hide();
}
};
再来看调用:
$("#txtName").autocomplete(data, {
caption: "输入中文/全拼/简拼/英文,使用↑↓可以选择",
mustMatch: true,
width: 260,
max: 10,
onBegin: function(options) {
var city= $("#txtCity").val();
if (city&& city!= "")
options.extraParams.city= city;
return options;
}
});
什么意思呢,其实做的只有三步:
在options中添加一个onBegin的参数
在onChange中判断onBegin是否有赋值,如果有,则调用这个函数,返回将返回值合并到options中去
调用的时候,在onBegin函数中添加一些业务逻辑,并可以重新设置options
就这样,我们不仅可以达到动态去添加extraParams参数,而且还可以动态地修改其它options参数,这个onBegin在用户改变输入框的值就会触发。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值