2012-02-03 75 views
1

我有一个文本框和一个列表框,我的最终目的是使用文本框来过滤列表框。下面的代码工作,但是文本框是区分大小写的,我需要用户能够输入任何大小写,并且相应地过滤列表框。从文本框中的ASP.NET JQuery过滤器列表框值(区分大小写)

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

感谢所有帮助

回答

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]); 
} 
+0

优秀,只是尝试和作品就像一个治疗!谢谢 !! – 2012-02-03 12:45:07

相关问题