2013-06-27 57 views
2

在通過其他關於此問題的其他SO問題之後,我仍然無法弄清楚如何在我的情況下使用它。我有一個表格,上面有幾行和一個輸入控件,我需要根據輸入內容進行過濾。每行有一個刪除按鈕,我沒有在我的jsFiddle中連接。這在我的真實網頁上運行良好。使用輸入來過濾表格行

我的主要問題是過濾器本身。它絕對不會過濾正確,我不知道如何考慮刪除按鈕。當我開始在過濾器中輸入時,我需要做什麼,按鈕文本(「刪除」)將被忽略,行將被正確過濾?

這裏是一個半工作jsFiddle和「半工作」我的意思是,如果你鍵入字母'r',一切都被過濾,但一行。絕大多數您輸入的其他信件都會被過濾。

濾膜代碼

<script> 
$("#searchFilter").keyup(function() { 
    var data = this.value.split(" "); 
    var tbl = $("#table1").find("tr"); 
    if (this.value == "") { 
     tbl.show(); 
     return; 
    } 
    tbl.hide(); 
    tbl.filter(function (i, v) { 
     var t = $(this); 
     for (var d = 0; d < data.length; d++) { 
      if (t.is(":contains('" + data[d] + "')")) { 
       return true; 
      } 
     } 
     return false; 
    }).show(); 
}); 
</script> 


由於這個職位,我能得到一點點的開始,但現在只是停留...:https://stackoverflow.com/a/17075148/738262



工作代碼

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) { 
    return function(elem) { 
     return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; 
    }; 
}); 

$("#searchFilter").keyup(function() { 
    var data = this.value.split(" "); 
    var tbl = $("#table1").find("tr"); 
    if (this.value == "") { 
     tbl.show(); 
     return; 
    } 
    tbl.hide(); 
    tbl.filter(function (i, v) { 
     var t = $(this); 
     for (var d = 0; d < data.length; d++) { 
      if (t.is(":Contains('" + data[d] + "')")) { 
       return true; 
      } 
     } 
     return false; 
    }).show(); 
}); 

回答

3

:contains區分大小寫。當您輸入r時,它找不到Running,只是Bar

另外在for循環中應該是d++

+0

那麼這是很好的知道。我並不知道:contains是區分大小寫的。非常感激。另外,在我看到的另一篇文章中,它有++ d,當我在我的問題中對它進行重新格式化時,我忘了糾正它,但它現在已經修復。我查了一下怎麼做:包含大小寫不敏感,並找到了一個工作(雖然我真的不喜歡它,我敢肯定有一個更好的方法,我會繼續尋找)。我正在用這項工作更新我的OP。再次,非常感謝您的幫助! – Brian