jquery Autocomplete

单于翰飞
2023-12-01

    前端代码

    先引用 <script type="text/javascript" src="/js/plugin/jquery.autocomplete.min.js"></script>

    <link rel="Stylesheet" href="/js/plugin/jquery.autocomplete.css" />

   

   在界面加载完成后触发

$(document).ready(function () {
	autoComple();
});

 

function autoComple(){
	$("#s_customerId").autocomplete("/cnf/queryCnfCustomerBycId.action",
	{
		 max: 12,    //列表里的条目数
         minChars: 3,    //自动完成激活之前填入的最小字符
         width: 300,     //提示的宽度,溢出隐藏
         scrollHeight: 300,   //提示的高度,溢出显示滚动条
         matchContains: true,    //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示
         autoFill: false,    //自动填充
         parse: function(data) {  //这里是转换后台的数据,因为后台返回的时候是一个字符串,不转换会只显示一行
            return $.map(eval(data), function(row) {
                return {
                    data: row,
                    value: row.name,
                    result: row.name + " <" + row.code + ">"
                }
            });
         },
         formatItem: function(data, i, max) {
             return data.code + '【' + data.name + '】';
         },
         formatMatch: function(data, i, max) {
             return data.code + data.name;
         },
         formatResult: function(data) {
             return data.code;
         }
     }).result(function(event, data, formatted) {
     	$("#s_customerId").val(data.code);
     });
}

    result方法是jQuery Autocomplete插件里的重要方法,它在用户在选定了某个条目时触发。data参数为选中的数据。

    formatItem、formatMatch、formatResult是自定提示信息的关键。

 

    formatItem作用在于可以格式化列表中的条目,比如我们加了“I”,让列表里的字显示出了斜体。

 

    formatMatch是配合formatItem使用,作用在于,由于使用了formatItem,所以条目中的内容有所改变,而我们要匹配的是原始的数据,所以用formatMatch做一个调整,使之匹配原始数据,

 

    formatResult是定义最终返回的数据,比如我们还是要返回原始数据,而不是formatItem过的数据。

 

    台代码,具体实现代码可以忽略,就是查询数据后组装成json数组,返回。

  

public void queryCustomerIdAndName(){
		
		CnfCustomerInfo cust = new CnfCustomerInfo();
		cust.setCustomerId(q); //默认的参数变量,奇葩
		try{
			List<Object> list = this.cnfService.queryForList("cnf.queryCustomerBycId",cust,10);
			CnfCustomerInfo info = null;
			JSONObject json = null;
			JSONArray array = new JSONArray(); //添加到jsonArray数组
			for(Object obj : list){
				json = new JSONObject();
				info = (CnfCustomerInfo) obj;
				json.put("code", info.getCustomerId());
				json.put("name", info.getCustomerNameCh());
				array.add(json);
			}
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentType("text/html;charset=UTF-8");
			response.getWriter().write(array.toString());
		
		}catch (Exception e) {
			e.printStackTrace();
		}
	}

 

 

 

 

 

 

 

 

 类似资料:

相关阅读

相关文章

相关问答