2012-06-13 57 views
0

試圖使這個使用.find的jQuery過濾器不區分大小寫。需要幫助才能使jQuery .find不區分大小寫

例如,當search =「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(); 
      } 
     } 
     } 
    }); 
}); 

回答

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(); 
      } 
     } 
     } 
    }); 
}); 
+0

哎呀!那很快。快速檢查,看起來像希望的那樣工作。早上將進行更多測試。謝謝! – user1452893

6

轉換兩個字符串爲小寫,然後做搜索:

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

$li.text().toLowerCase().search(search); 
+0

謝謝!試過了第一個答案,它似乎按照希望工作。我會在哪裏發送您發送的第二行?什麼會讓你與衆不同? – user1452893

+0

我剛剛加了'.toLowerCase()',所以你應該可以找到要修復的行。有什麼區別?在搜索框中鍵入一個無效的正則表達式(例如''''),你會看到.. –

+0

是的,我應用了你的建議,但是看不到下面方法的結果有任何不同。兩個問題都解決了。我錯過了你的優勢嗎?謝謝! – user1452893