2012-02-03 84 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

相關問題