标签:style blog http io ar color 使用 sp java
$(function(){ var data = "the People‘s Republic of China".split(" "); $("#autocomplete").autocomplete(data,{minChars:0}).result(function(event,data,formatted){ alert(data); }); }); </script> <input type="text" id="autocomplete"/>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="../css/autocomplete/jquery.autocomplete.css"/> <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="../js/autocomplete/jquery.autocomplete.js"></script> <script type="text/javascript"> $(function(){ var emails = [ { name: "Peter", to: "peter@pan.de" }, { name: "Molly", to: "molly@yahoo.com" }, { name: "Forneria", to: "live@japan.jp" }, { name: "Master <em>Sync</em>", to: "205bw@samsung.com" }, { name: "Dr. <strong>Tech</strong> de Log", to: "g15@logitech.com" }, { name: "Don Corleone", to: "don@vegas.com" }, { name: "Mc Chick", to: "info@donalds.org" }, { name: "Donnie Darko", to: "dd@timeshift.info" }, { name: "Quake The Net", to: "webmaster@quakenet.org" }, { name: "Dr. Write", to: "write@writable.com" }, { name: "GG Bond", to: "Bond@qq.com" }, { name: "Zhuzhu Xia", to: "zhuzhu@qq.com" } ]; $("#autocomplete").autocomplete(emails,{ minChars: 0,//自动完成激活之前填入的最小字符 max:12,//列表条目数 width: 400,//提示的宽度 scrollHeight: 300,//提示的高度 matchContains: true,//是否只要包含文本框里的就可以 autoFill:false,//自动填充 formatItem: function(data, i, max) {//格式化列表中的条目 row:条目对象,i:当前条目数,max:总条目数 return i + ‘/‘ + max + ‘:"‘ + data.name + ‘"[‘ + data.to + ‘]‘; }, formatMatch: function(data, i, max) {//配合formatItem使用,作用在于,由于使用了formatItem,所以条目中的内容有所改变,而我们要匹配的是原始的数据,所以用formatMatch做一个调整,使之匹配原始数据 return data.name + data.to; }, formatResult: function(data) {//定义最终返回的数据,比如我们还是要返回原始数据,而不是formatItem过的数据 return data.to; } }).result(function(event,data,formatted){ alert(data.to); }); }); </script> </head> <body> <input type="text" id="autocomplete"/> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="../css/autocomplete/jquery.autocomplete.css"/> <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="../js/autocomplete/jquery.autocomplete.js"></script> <script type="text/javascript"> function zdbq(id){ var url = encodeURI(‘/xx/xx.action‘); $("#"+id).autocomplete( url, { minChars: 0,//自动完成激活之前填入的最小字符 max:12,//列表条目数 width: 400,//提示的宽度 scrollHeight: 300,//提示的高度 matchContains: true,//是否只要包含文本框里的就可以 autoFill:false,//自动填充 matchContains: true, matchCase:true, parse: function(data) { var obj =eval("(" + data + ")"); //转换成js对象 return $.map(obj, function(row) { return { data: row, value: row.name, result: row.name }; });//给后台交互的数据进行处理 }, formatItem: function(data, i, max) {//格式化列表中的条目 row:条目对象,i:当前条目数,max:总条目数 return i + ‘/‘ + max + ‘:"‘ + data.name; }, formatMatch: function(data, i, max) {//配合formatItem使用,作用在于,由于使用了formatItem,所以条目中的内容有所改变,而我们要匹配的是原始的数据,所以用formatMatch做一个调整,使之匹配原始数据 return data.name; }, formatResult: function(data) {//定义最终返回的数据,比如我们还是要返回原始数据,而不是formatItem过的数据 return data.name; } }) } </script> </head> <body> <input type="text" id="autocomplete" onkeyup="zdbq(‘autocomplete‘);"/> </body> </html>
中文支持:
在对中文输入法打开时,firefox3.0中是对中文拼音的自动匹配,而对输入后的中文无法及时触发匹配;而在我的IE6.0下,则无此问题。
原因分析: Autocomplete插件对用户输入字符的触发自动匹配是通过”keydown”事件进行的(可分析 jquery.autocomplete.js第92行),在IE6中,当输入法打开时,输入的字符是不会触发”keydown”的,只有中文输入完毕才 触发之,所以中文输入和latin文没有区别的;但在firefox3.0下,无论输入法打开否,按键都会触发”keydown”事件,所以造成中文输入 完毕,自动匹配的是刚才打出的部分中文拼音字母。
解决方法: 网上查到的最多做法是修改jquery.autocomplete.js第92行,将”keydown”替换为”keyup”, 但这个不是根本办法,虽然这样改后可在firefox中及时对输入的中文进行自动匹配,但将原插件中回车、tab等重要的事件机制破坏了,比如这样改后, 如果你的input是在一个form里的话,回车从原来的将选定项输入到input中变为了直接提交form表单了,这并不是我们想要的。
我的方法原理是,补充一个原插件触发查询的事件,就是当input输入栏发生字符变化时,重新进行查询(调用其内部的onChange函数),这里 主要针对firefox而言,因为我们的系统访问最多的是IE和firefox。而恰好firefox有一个input变化的事件就是oninput,那么我们只要在原jquery.autocomplete.js第199行(即$input.bind方法的末尾),插入如下代码:
.bind("input", function() { onChange(0, true); })
大部分转载:http://kb.cnblogs.com/a/2351152/
标签:style blog http io ar color 使用 sp java
原文地址:http://www.cnblogs.com/donghua2014/p/4120663.html