六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 34|回复: 0

autocomplete 自动完成控件使用 简记

[复制链接]

升级  80%

8

主题

8

主题

8

主题

童生

Rank: 1

积分
40
 楼主| 发表于 2013-1-29 10:49:03 | 显示全部楼层 |阅读模式
一、需要准备的文件:
jquery.js
neverModules-autoComplete.js
autocomplete.css
animated_loading.gif

二、页面:
1、引入文件:
<link rel="stylesheet" href="/page/autocomplete.css" type="text/css"><script type="text/javascript" src="/page/neverModules-autoComplete.js"></script><script type="text/javascript" src="/page/jquery.js"></script>
2、需要自动补全的文本框:
<input id="operatorName" type="text" name="operatorName"  style="width:60%;" class="textfield_readselect" onkeyup="goodsAutoComplete.hdleEvent(event);" ondblclick="goodsAutoComplete.expandAllItem();"  onmouseout="goodsAutoComplete.closeAnimateImage();">
貌似当全页面只有一个文本框时,自动补全的时候,敲回车键,会弹出到新连接页面,再加个吧:<input id="aaaxxxx" type="text" name="sd2xxxx" style="display: none">

3、js函数:

//人员列表键值对,把人员的姓名作为key,把对应的序号作为value,在后面拿来验证用户是否输入一个不存在的人员进行提交。var keyValues = [];var goodsCompleteDataSource= [       {'text':'','hints':'','content':'','hiddenText':''       }];            var goodsAutoComplete = null;              onload = function pageLoadHdle(){        var goodsConfiguration = {          instanceName: "goodsAutoComplete",          textbox: document.all("operatorName"),          dataSource:goodsCompleteDataSource        };        goodsAutoComplete = new neverModules.modules.autocomplete(goodsConfiguration);        goodsAutoComplete.callback = function (autocompleteValue, autocompleteContent) {          document.getElementById("operatorName").value=autocompleteValue;        }        goodsAutoComplete.useContent = true;goodsAutoComplete.useSpaceMatch = true;goodsAutoComplete.ignoreWhere = true;        goodsAutoComplete.create();        //goodsAutoComplete.expandAllItem();        goodsAutoComplete.showAnimateImage("/hx_choose_person/page/animated_loading.gif");        window.setTimeout(          function closeAnimateImageAfter1seconds() { //设置图片消失时间为1秒             goodsAutoComplete.closeAnimateImage();          }, 1000        );        onLoadGoods();      }          function onLoadGoods(){   //加载人员列表 $.ajax({     type: "POST",     dataType:"json",     data:{id:$("#id_array").val(),type:$("#type_array").val()},         cache: false,     async:false,     url: "/后台servlet路径",     success: function(data){    for(var property in data){                   var bean = data[property];//此处将该数组填充值                   keyValues[bean.text] = bean.content;                   goodsCompleteDataSource[property]=bean;            }     }   });}
4、后台servlet查询拼凑字符串方法:
String id = request.getParameter("id");String type = request.getParameter("type");List personList = DbUtil.getUserInfoList(id,type);StringBuffer sbf = new StringBuffer();sbf.append("[");for(int i=0; i<personList.size(); i++) {PersonInfo person = (PersonInfo)personList.get(i);StringBuffer temp = new StringBuffer();temp.append("{text:");temp.append("'"+person.getOperatorName()+"'");temp.append(",");temp.append("hints:''");temp.append(",");temp.append("content:"+person.getOperatorID());temp.append(",");temp.append("hiddenText:'"+person.getOperatorName()+"'}");sbf.append(temp);if(i<personList.size()-1) {sbf.append(",");}}sbf.append("]");//response.setContentType("text/xml;charset=utf-8");//response.getWriter().print("[{text:'xzcz',hints:'',content:'22',hiddenText:'xzcz'},{text:'sa',hints:'',content:'22',hiddenText:'sa'}]");response.getWriter().print(sbf.toString());
5、为了防止用户输入不存在的人员并提交,在提交前验证一下:
function dosubmit(){var inputvalue = $("#operatorName").val();if(typeof(inputvalue) != "undefined") { if(typeof(keyValues[inputvalue]) == "undefined") {alert('你指定的人员不存在,请重新选择!');    return;    }    }......}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表