bootstrap-suggest-plugin (bsSuggest) 联想搜索插件之——中文字符在IE下POST 时乱码现象解决方案

来源:互联网 发布:python写爬虫 编辑:程序博客网 时间:2024/06/07 23:27

开篇先套用一句GitHub上的专业介绍:

这是一个基于 bootstrap 按钮式下拉菜单组件的搜索建议插件,必须使用于按钮式下拉菜单组件上。哈哈。。。

好,下面开始正文:

IE环境下,在输入框输入中文字符时进行联想搜索,IE可能会将输入的字符转为json,这就导致了post 时“query=”后面的输入字符完全乱码了(当然,谷歌下还是没有问题的),源码如下:

// 获取业务公司        function getddlServiceCompanyName() {            $("#selectSComName").bsSuggest({                allowNoKeyword: false,                multiWord: false,                separator: ",",                showBtn: false,                idField: 'code',                effectiveFields: ['word'],                getDataMethod: "url",                url: "/Common/ServiceCompany?query=",                processData: function (json) {                    var data = { value: [] };                    $.each(json.data, function (i, r) {                        data.value.push({ word: r.comname, code: r.comcode, compk: r.compk })                    })                    return data;                }            }).on('onSetSelectValue', function (e, keyword, data) {                $("#hidServiceCompanyCode").val(data.code);                $("#hidServiceCompanyPK").val(data.compk);            });        }
那么该怎么解决这个问题呢?方案如下:
bootstrap-suggest-plugin里有这么一个参数:
 fnPreprocessKeyword: null       //搜索过滤数据前,对输入关键字作进一步处理方法。注意,应返回字符串
于是,我们的方案来了——使用这个参数来增加一个方法,对键入的字符进行预先编码为UTF-8,这样不论是在谷歌下还是在IE下应该都是没有问题的,

于是我们这么写这个参数:
fnPreprocessKeyword: function (keyword) {                    return encodeURI(keyword, "UTF-8");                },

完整的写法就是:
// 获取业务公司        function getddlServiceCompanyName() {            $("#selectSComName").bsSuggest({                allowNoKeyword: false,                multiWord: false,                separator: ",",                showBtn: false,                idField: 'code',                effectiveFields: ['word'],                getDataMethod: "url",                url: "/Common/ServiceCompany?query=",                fnPreprocessKeyword: function (keyword) {                    return encodeURI(keyword, "UTF-8");                },                processData: function (json) {                    var data = { value: [] };                    $.each(json.data, function (i, r) {                        data.value.push({ word: r.comname, code: r.comcode, compk: r.compk })                    })                    return data;                }            }).on('onSetSelectValue', function (e, keyword, data) {                $("#hidServiceCompanyCode").val(data.code);                $("#hidServiceCompanyPK").val(data.compk);            });        }


进过实测,在谷歌或IE下,完全OK!特此记录。



0 0
原创粉丝点击