1

我有一个表格,其中每一行都是一个地址。每行也有一个邮政编码,但它是隐藏的。我需要一个文本框来过滤与输入的 zip 匹配的地址行。要搜索的字段名为“zip”。

这是我的桌子:

<asp:DataList
  id="list1"
  runat="server">
  <ItemTemplate>
     <cc1:SWCLabel 
         runat="server"
         Text ='<%# Eval("address")%>'
         zip='<%# Eval("zip")%>'
          />
  </ItemTemplate>

每个表的行都是这样渲染的,注意 span 中的 zip 属性:

 <tr>
  <td>
      <span zip="11">address mmomo</span>
  </td>
    </tr>

更新的演示: 这是演示:zip 文本框与 zip 完全匹配,但我需要匹配包含或以输入文本开头的 zip:http: //jsfiddle.net/QFQ5k/83/

4

2 回答 2

1
$.expr[':'].containsIgnoreCase = function (n, i, m) {
            return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
        };

    var gridAddr = $("#t1");
        var filtroCP = $('#txtbox');
    $("#txtbox").keyup(function () {
            gridAddr .find("tr").hide();
            var data = this.value.split(" ");
            var jo = gridAddr .find("tr");

            if ($(this).val().length != 0) {
                $.each(data, function (i, v) {
                    jo = jo.filter(function(index){
                        return $(this).find("span").attr("zip").search($("#txtbox").val())!=-1;                  

                    });
                });
                jo.show();
            }
            else {
                jo.show();
            }
        });​

更新 如果您确定该行的任何一个子元素包含属性“zip”然后使用它来过滤行,而不管它们的呈现:

代替

return $(this).find("span").attr("zip").search($("#txtbox").val())!=-1;

return $(this).find("[zip*='"+$("#txtbox").val()+"']").length>0;

在这里查看:http: //jsfiddle.net/QFQ5k/89/

于 2012-11-19T12:40:34.240 回答
0

使用 linq.js http://linqjs.codeplex.com/

<!DOCTYPE>
<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript" src="jquery.linq.min.js"></script>
</head>
<body>
<table border="1">
<tr><td zip="112233">112233</td></tr>
<tr><td zip="232323">232323</td></tr>
<tr><td zip="454567">454567</td></tr>
</table>
<input type="text" id="filter">
<script>  
$('#filter').change(function(){
    $("[zip]").show();
    $("[zip]").toEnumerable()
    .Select( function(x){  return x.attr('zip').indexOf($('#filter').val())==-1 ? x : null})
    .TojQuery()
    .each(function(){
        $(this).hide();
    });
}); 
</script>
</body>
</html>
于 2012-11-19T13:09:38.197 回答