如何根据未显示的属性将表行过滤到span中

问题描述 投票:1回答:2

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

这是我的表:

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

每个表行都是这样呈现的,请注意zip属性到span中:

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

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

javascript jquery asp.net datalist
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/


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>
© www.soinside.com 2019 - 2024. All rights reserved.