通过列表搜索按jquery(不区分大小写)

时间:2013-09-29 13:59:31

标签: javascript jquery

我正在尝试按搜索框搜索列表。这是我的HTML:

<input type="text" id="query" value=""/>
<ol id="abbreviations" >
<li>Cars</li>
<li>bars</li>
.
.

<ol>

这是我的jQuery代码:

<script>

var abbrs = {};

$('ol#abbreviations li').each(function(i){
    abbrs[this.firstChild.nodeValue] = i;
});

$('#query').focus().keyup(function(e){
    if(this.value.length >= 2){
        $('ol#abbreviations li').hide();
        var filterBy = this.value;
        for (var abbr in abbrs) {
            if (abbr.indexOf(filterBy) !== -1) {
               var li = abbrs[abbr];
               $('ol#abbreviations li:eq('+li+')').show();
            }
        }       
    } else {
        $('ol#abbreviations li').show();    
    }
    if(e.keyCode == 13) {
        $(this).val('');
        $('ol#abbreviations li').show();
    }   
});
</script>

我的代码工作正常,但它区分大小写。例如,如果我输入“Cars”,它将过滤列表,但如果我输入“cars”则不起作用。那么我怎样才能使这个jQuery搜索变得敏感呢?我尝试更改var filterBy = this.value.toLowerCase();,但它与大写字母不匹配。我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:1)

您需要将filterValueabbr

转换为小写
var filterBy = this.value.toLowerCase();
...
if (abbr.toLowerCase().indexOf(filterBy) !== -1) {
...

另见this SO question