0

.find を使用するこの jQuery フィルターを大文字と小文字を区別しないようにしようとしています。

たとえば、検索 = "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 に答える