【问题标题】:ASP.NET JQuery Filter Listbox from Textbox value (Case sensitive issue)ASP.NET JQuery Filter Listbox from Textbox value(区分大小写的问题)
【发布时间】:2012-02-25 23:50:52
【问题描述】:

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

例子

"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);
}

提前感谢您的帮助

【问题讨论】:

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


    【解决方案1】:

    你可以用一个新的表达式来扩展 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]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2018-12-14
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多