重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

JQueryAutocomplete实战

废话不多说,先看效果!~

创新互联公司是一家专注于网站建设、做网站与策划设计,定州网站建设哪家好?创新互联公司做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:定州等地区。定州做网站价格咨询:18982081108

JQuery Autocomplete实战

需要引入的资源如下



前端代码


客户名

    
    

Javascipt代码

$("#q-customerName").autocomplete("/CustomerName/getCustomerNameSuggestion.do",{
max:10,//最多5条记录
minChars:1,
scrollHeight: 250,
width:206,
dataType:'json',//返回的数据类型为JSON类型
extraParams: {
    "customerName": function () {
	return encodeURIComponent($("#q-customerName").val());
    }
},
parse:function(data) {//解释返回的数据,把其存在数组里
    var parsed = [];
    for (var i = 0; i < data.length; i++) {
	parsed[parsed.length] = {
	    data: data[i],
	    key: data[i].key,
	    value: data[i].value,
	    result: data[i].value //返回的结果显示内容
	};
    }
    if (data.length == 0) {
	parsed.push({
	    data: {
		"key": "0",
		"value": "无搜索结果"
	    },
	    key: "0",
	    result: "无搜索结果"
	});
    }
    return parsed;
},
formatItem: function(item) {//显示下拉列表的内容
    return item.value;
},
formatMatch: function(item) {
    return item.value;
},
formatResult: function(item) {
    return item.value;
}
}).result(function(event, item, formatted) {//把返回的结果内容显示在其他文本框上
$("#q-customerId").val(item.key);
if(item.key == 0){
    $("#q-customerName").val("");
}
});

后端返回的json数据格式如下

[
    {
        "key": "5133",
        "value": "上海**有限公司"
    },
    {
        "key": "5197",
        "value": "上海**用品有限公司"
    },
    {
        "key": "5202",
        "value": "上海**传播有限公司"
    },
    {
        "key": "5234",
        "value": "上海**用品有限公司"
    },
    {
        "key": "5319",
        "value": "上海**用品有限公司"
    },
    {
        "key": "5402",
        "value": "上海**用品有限公司"
    },
    {
        "key": "5500",
        "value": "上海**有限公司"
    },
    {
        "key": "5581",
        "value": "上海**用品有限公司"
    }
]

Firefox下有个小bug,使用搜狗输入法输入中文时不触发antocomplete事件。正在解决。

测试发现JQuery1.9及以上不兼容,项目中使用的是1.8.3

这东西没啥技术含量,就是麻烦,记录一下避免以后在同样的问题上浪费时间。


网页名称:JQueryAutocomplete实战
当前网址:http://cqcxhl.com/article/gshgce.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP