当前位置:首页 > javascript > 正文

jquery autocomplete 1.1 支持中文使用指南

客观的说,autocomplete插件最早接触是在2009年在丁香园实习的时候使用过;当时一用感觉离google近了一点:)

在新的项目中很多地方用到了autocomplete自动化提示功能;其中碰到些小问题记录下,方便以后使用;

(1)支持中文问题:看了网上很多帖子,据说是有人很早就提出来了,不过依然没有解决;最近的1.1版本也没奏效;输入中文在FF浏览器下面,无法被检测输入框变化;
一般中文输入需要涉及到切换到输入法,这个ctrl+空格等,被检测,可是FF下面无法识别输入;一般通用有效的解决方法是在大约199位置,添加:

.bind("input", function(){ //这里解决了中文输入的bug;中文输入的时候,不会触发keydown事件
$(this).trigger("keydown");
});

(2)使用autocomplete()之后选择某个选择的回调很重要,举例说明,比如id为searchModuleKeyWord的输入框,触发自动提示:

看了autocomplete的源码,默认的请求值为get,可以修改$.ajax()的type为post,请求的参数为q;
默认的分割为|,返回值会被|切分;所有js中获取到的值row[0],row[1]都是来自与服务端的|分割的
数据;

1 条评论

  1. 沙发2014-05-06 下午2:58
    admin

    使用autocomplete有3个比较重要的方法;
    (1)formatItem: 也就是让服务器端返回的数据到底怎么显示?
    (2)result()回调中的flushCache()防止请求缓存;
    (3)用户单击的时候,就显示所有的列表;
    比如:
    $(“FileNameList”).autocomplete(“/publish/searchScripts?type=” + type,
    {
    width: 298,
    max: 30,
    selectFirst: false,
    formatItem : function(row){
    return row[0] + ‘(‘ + row[1] + ‘)’;
    }
    }).result(function (event, row, formatted) {
    $(“#” + type + “FileName”).val(row[0]);
    $(“#” + type + “ScriptDesc”).val(row[1]);
    require(‘../common/fileOperator’).setScriptContent(type, row[2].replace(/< >/g, “\n”).replace(/< >/g, “|”));
    $(“#” + type + “FileNameList”).flushCache();
    }).focus(function(){
    $(this).click();
    });

发表评论

您必须 [ 登录 ] 才能发表留言!