从文本框值开始的ASP.NET JQuery过滤器列表框(区分大小写的问题)

时间:2012-02-03 10:44:26

标签: javascript jquery asp.net html vb.net

我有一个文本框和一个列表框,我的最终目的是使用文本框来过滤列表框。下面的代码可以工作,但是文本框区分大小写,我需要用户能够输入任何大小写,并且它会相应地过滤列表框。

实施例

"MY SITE" = Works
"my site" = Works
"My Site" = Does not work
"mY sITE" = Does not work 

我的JQuery代码是

var ddlText, ddlValue, ddl, lblMesg;

$(document).ready(function CacheItems() {
    ddlText = new Array(); ddlValue = new Array();
    ddl = document.getElementById("<%=lstSites.ClientID %>");
    for (var i = 0;
    i < ddl.options.length; i++) {
        ddlText[ddlText.length] = ddl.options[i].text;
        ddlValue[ddlValue.length] = ddl.options[i].value;
    }
});
window.onload = CacheItems;
function FilterItems(value) {
    ddl.options.length = 0; for (var i = 0; i < ddlText.length; i++) {
        if (ddlText[i].toLowerCase().indexOf(value) != -1) {
            AddItem(ddlText[i], ddlValue[i]);
        }
        else if (ddlText[i].toUpperCase().indexOf(value) != -1) {
            AddItem(ddlText[i], ddlValue[i]);
        }
    }
} 
function AddItem(text, value) {
    var opt = document.createElement("option");
    opt.text = text;
    opt.value = value;
    ddl.options.add(opt);
}

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:2)

您可以使用新表达式扩展jQuery。

jQuery.extend(
    jQuery.expr[':'], { 
        ContainsInsensitive : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0" 
});

请参阅contains()Is there a case insensitive jQuery :contains selector?

...或者只是将两个值都转换为大写/小写;

if (ddlText[i].toLowerCase().indexOf(value.toLowerCase()) != -1) {
  AddItem(ddlText[i], ddlValue[i]);
}