使用 jQuery 进行不区分大小写的搜索

Case insensitive search with jQuery

我使用下面的脚本搜索 table 以显示与用户输入匹配的结果。如果您输入大写字母 'K' 并且所需结果以小写字母 'k' 开头,结果将不会显示,因为它与用户 不完全匹配 输入。我如何 select .value() 不区分大小写?

$("#search_input").keyup(function() {
  var value = this.value;
  $("#table").find(".table_row").each(function(index) {
    if (!index) return;
    var id = $(this).find(".table_cell").first().text();
    $(this).toggle(id.indexOf(value) !== -1);
  });
});

您提供的脚本的一部分,按原样比较字符串。最好 lowercase 用户输入和 table 单元格的文本 ID,以便比较两个结果,然后切换您需要的内容。

$("#content").keyup(function() {
  var value = this.value.toLowerCase();
  $("#table").find(".table_row").each(function(index) {
    if (!index) return;
    var id = $(this).find(".table_cell").first().text();
    if (id.toLowerCase().indexOf(value) !== -1) {
      $(this).toggle();
    }
  });
});

还有一件事要补充。只是好奇,为什么要将字符串比较的结果传递给 toggle ? Toggle 需要两个可选参数:持续时间和完成回调函数。如果您不需要加速或之后做某事,您只需按原样切换即可。

With no parameters, the .toggle() method simply toggles the visibility of elements

我只需对可搜索元素和用户输入都使用 toLowerCase() 来比较两者的小写值就足够了。

$("#search_input").keyup(function() {
  var value = this.value.toLowerCase();
  $("#table").find(".table_row").each(function(index) {
    if (!index) return;
    var id = $(this).find(".column-namelist").first().text();
    $(this).toggle(id.toLowerCase().indexOf(value) !== -1);
  });
});