0

试图使这个使用 .find 的 jQuery 过滤器不区分大小写。

例如,当 search = "cat"(无引号)时,它会找到 "cat" 但不会找到 "Cat" 或 "CAT"。同样,“Cat”会找到“Cat”,但不会找到“cat”。

我怀疑这是非常基本的东西,但无法弄清楚,所以我在第一篇文章中联系了这里。

我无法控制列表项本身的内容,因此无法在那里修改任何内容,

在此先感谢您的帮助!

PS请不要对你们可能很初级的东西大喊大叫。;)

  $("#filter").live("keyup", function (ev) {
    var $filter = $(this),
        keyCode = ev.keyCode || ev.which,
        search;

    if (keyCode === 27) { //ESC
      $filter.val("");
    }

    search = $(this).val();
    $("#results").find("li").each(function () {
      var $li = $(this);
      if (search === "") {
        $li.show();
      } else {
        if (_.include(service_names, search)) {
          $li.toggle($li.hasClass("items-" + search));
        } else {
          if ($li.text().search(search) > 0) {
            $li.show();
          } else {
            $li.hide();
          }
        }
      }
    });
 }); 
4

2 回答 2

6

将两个字符串都转换为小写,然后进行搜索:

search = $(this).val().toLowerCase();

$li.text().toLowerCase().search(search);
于 2012-06-13T06:30:18.137 回答
1

您想要进行不区分大小写的搜索。尝试使用正则表达式search(/string/i)

$("#filter").live("keyup", function (ev) {
    var $filter = $(this),
        keyCode = ev.keyCode || ev.which,
        search;

    if (keyCode === 27) { //ESC
      $filter.val("");
    }

    search = $(this).val() ;
    // added
    var search_regex = new RegExp(search, 'i');
    $("#results").find("li").each(function () {
      var $li = $(this);
      if (search === "") {
        $li.show();
      } else {
        if (_.include(service_names, search)) {
          $li.toggle($li.hasClass("items-" + search));
        } else {
          // changed here
          if (search_regex.test($li.text())) {
            $li.show();
          } else {
            $li.hide();
          }
        }
      }
    });
 }); 
于 2012-06-13T06:29:56.187 回答