仅选择带有字母的值是自动完成数据列表中的起始字母 [英] Select value only with letter is starting letter in autocomplete datalist

查看:21
本文介绍了仅选择带有字母的值是自动完成数据列表中的起始字母的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 datalist 作为我的自动完成 字段.它的工作正常.我的列表中有值 james、reeta 和 mary,如果我在自动完成框中输入 "r",它会返回值 reeta 和 mary,因为 mary 也包含字母 "r".但我不希望我的自动完成像这样工作.我只想要 reeta not mary 这意味着以输入的字母作为起始字母的值.

I am using datalist for my autocomplete field. Its working fine. I have the values james,reeta and mary in my list, if i enter "r" in my auto complete box, it returns the values reeta and mary because mary also contain the letter "r". but i dont want my auto complete to work like this. i just want only reeta not mary it means the values which has the entered letter as the starting letter.

推荐答案

使用 source 选项实现自己的搜索:

Use source option to implement your own search:

var dataSource = ['mary', 'reeta', 'james'];

$("input").autocomplete({
    minLength: 1,
    source: function(request, response) {

        var matcher = new RegExp( '^' + $.ui.autocomplete.escapeRegex(request.term), "i" );
        var filteredData = $.grep( dataSource, function(value) {
            return matcher.test( value.label || value.value || value );
        });
        response(filteredData);
    }
});

示例 http://jsfiddle.net/AU92X/8/

或者你甚至可以通过重写 $.ui.autocomplete.escapeRegex 使其成为全局:

Or you can even make it global just by rewriting $.ui.autocomplete.escapeRegex:

var dataSource = ['mary', 'reeta', 'james'];

$("input").autocomplete({
    minLength: 1,
    source: dataSource
});

var escapeRegexp = $.ui.autocomplete.escapeRegex;
$.extend( $.ui.autocomplete, {
    escapeRegex: function( value ) {
        return '^' + escapeRegexp(value);
    }
});

示例 http://jsfiddle.net/AU92X/10/

这篇关于仅选择带有字母的值是自动完成数据列表中的起始字母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆