我正在尝试这个漂亮的小jQuery脚本来搜索这里找到的表:
Searching table rows with jQuery
它工作得很好但是我不希望它区分大小写,例如,如果我的表中的值是Value One,我希望能够搜索值1或VALUE ONE并仍然得到正确的结果
这是控制它的Jquery:
<script>
$(document).ready(function(){
$('input[name="search"]').keyup(function(){
var searchterm = $(this).val();
if(searchterm.length > 3) {
var match = $('tr.data-row:contains("' + searchterm + '")');
var nomatch = $('tr.data-row:not(:contains("' + searchterm + '"))');
match.addClass('selected');
nomatch.css("display", "none");
} else {
$('tr.data-row').css("display", "");
$('tr.data-row').removeClass('selected');
}
});
});
</script>
任何人都可以帮助我使其不区分大小写吗?
答案 0 :(得分:0)
您可以使用toLowerCase()方法将两个字符串转换为小写。
看起来应该是这样的:
$(document).ready(function(){
$('input[name="search"]').keyup(function(){
var searchterm = $(this).val();
searchterm=searchterm.toLowerCase();
if(searchterm.length > 3) {
var match = $('tr.data-row:contains("' + searchterm + '")');
var nomatch = $('tr.data-row:not(:contains("' + searchterm + '"))');
match.addClass('selected');
nomatch.css("display", "none");
} else {
$('tr.data-row').css("display", "");
$('tr.data-row').removeClass('selected');
}
});
});
您还需要覆盖jQuery方法!看起来像这样......
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().toLowerCase().indexOf(arg.toLowerCase()) >= 0;
};
});
这很简单,你所做的就是在比较它们之前强制两个字符串都是小写字母。这样就可以跳过不同的案例问题。
希望这会有所帮助,祝你好运。
答案 1 :(得分:-1)
你最好的选择可能就是编写自己的选择器表达式:
$.expr[":"].containsCI = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
答案 2 :(得分:-2)
您可以在此处找到解决方案:Link,这将覆盖原始的“:contains”选择器
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function( elem ) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});