我有一个文本框和一个列表框,我的最终目的是使用文本框来过滤列表框。下面的代码可以工作,但是文本框区分大小写,我需要用户能够输入任何大小写,并且它会相应地过滤列表框。
实施例
"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);
}
提前感谢您提供任何帮助
答案 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]);
}