现在的位置: 首页fault, js>正文
解决autocomplete中文在firefox下的bug
2012年11月14日 fault, js 暂无评论 ⁄ 被围观 3,554 view+

网上的方法大致是以下两种:

方法一、将”keydown”替换为”keyup”,但这个不是根本办法,虽然这样改后可在firefox中及时对输入的中文进行自动匹配,但将原插件中回车、tab等重要的事件机制破坏了,比如这样改后,如果你的input是在一个form里的话,回车从原来的将选定项输入到input中变为了直接提交form表单了,这并不是我们想要的。

方法二、直接在199行加一个bind(“input”, function(){onChange(0, true);}); 这样处理也是有问题的,增加一次请求,也不是我们想要的。

这里提供的方式增加如下代码:

.bind("input",function(){
	clearTimeout(timeout);
	timeout = setTimeout(onChange, options.delay);
})

增加之前的代码如下:

}).bind("flushCache", function() {
		cache.flush();
	}).bind("setOptions", function() {
		$.extend(options, arguments[1]);
		// if we've updated the data, repopulate
		if ( "data" in arguments[1] )
			cache.populate();
	}).bind("unautocomplete", function() {
		select.unbind();
		$input.unbind();
		$(input.form).unbind(".autocomplete");
	});

增加之后的代码如下:

}).bind("flushCache", function() {
		cache.flush();
	}).bind("input",function(){
		clearTimeout(timeout);
		timeout = setTimeout(onChange, options.delay);
	}).bind("setOptions", function() {
		$.extend(options, arguments[1]);
		// if we've updated the data, repopulate
		if ( "data" in arguments[1] )
			cache.populate();
	}).bind("unautocomplete", function() {
		select.unbind();
		$input.unbind();
		$(input.form).unbind(".autocomplete");
	});

给我留言

留言无头像?


×
腾讯微博