Html 在自动完成数据列表中选择“仅限字母为起始字母的值”

Html 在自动完成数据列表中选择“仅限字母为起始字母的值”,html,Html,我正在为我的自动完成字段使用数据列表。工作正常。我的列表中有值james、reeta和mary,如果我在自动完成框中输入“r”,它将返回值reeta和mary,因为mary也包含字母“r”。但是我不希望我的自动完成像这样工作。我只想要reeta而不是mary它表示以输入的字母作为起始字母的值 使用source选项实现您自己的搜索: var dataSource = ['mary', 'reeta', 'james']; $("input").autocomplete({ minLeng

我正在为我的自动完成字段使用数据列表。工作正常。我的列表中有值james、reeta和mary,如果我在自动完成框中输入“r”,它将返回值reeta和mary,因为mary也包含字母“r”。但是我不希望我的自动完成像这样工作。我只想要reeta而不是mary它表示以输入的字母作为起始字母的值

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

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);
    }
});
范例

或者,您甚至可以通过重写
$.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);
    }
});

示例

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

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);
    }
});
范例

或者,您甚至可以通过重写
$.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);
    }
});

示例

我发现很奇怪,自动完成数据列表按照您的要求工作,即在输入“r”时,它在Chrome和IE-10中只显示reeta而不显示mary(IE的较低版本不支持数据列表),而在点击“r”时,只有Mozilla Firefox同时显示reeta和mary。请分享,如果你发现这背后的原因是什么,我觉得很奇怪,自动完成数据列表按照你的要求工作,即在输入“r”时,Chrome和IE-10中只显示reeta而不显示mary(IE的较低版本不支持数据列表),而只有Mozilla Firefox在点击“r”时同时显示reeta和mary。请分享,如果你知道这是什么原因背后的幽闭,它的工作对我来说很好。。。非常感谢你。。。我使用了$.ui.autocomplete.escapeRegex函数。。。非常感谢。@SangeethaKrishnan刚刚注意到这个问题是关于html5数据列表=)很高兴我的回答有帮助。是的,但是我放弃了数据列表的想法。。正如你所说,我只是使用了无数据列表的自动完成功能…嗨,克劳斯特罗布,它对我来说工作很好。。。非常感谢你。。。我使用了$.ui.autocomplete.escapeRegex函数。。。非常感谢。@SangeethaKrishnan刚刚注意到这个问题是关于html5数据列表=)很高兴我的回答有帮助。是的,但是我放弃了数据列表的想法。。正如你说的,我只是使用了无数据列表的自动完成。。。