Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 击键时的动态搜索结果_Javascript_Jquery_Json_Jquery Ui_Autocomplete - Fatal编程技术网

Javascript 击键时的动态搜索结果

Javascript 击键时的动态搜索结果,javascript,jquery,json,jquery-ui,autocomplete,Javascript,Jquery,Json,Jquery Ui,Autocomplete,我有一个存储在数据库中的项目列表 我使用foreach列出返回的项目,每个项目旁边都有一个复选框,如下所示: var db = Database.Open("database"); var sql = "SELECT * from table"; var result = db.Query(sql); 。。。 输入他们的姓名: 然后在getUsers中: @{ var db = Database.Open("d

我有一个存储在数据库中的项目列表

我使用foreach列出返回的项目,每个项目旁边都有一个复选框,如下所示:

            var db = Database.Open("database");
            var sql = "SELECT * from table";
            var result = db.Query(sql);

。。。 输入他们的姓名:

然后在getUsers中:

@{
    var db = Database.Open("database");
    var term = Request.QueryString["term"] + "%";
    var sql = "SELECT * from table where attribute LIKE @0 OR secondAttribute LIKE @0 OR thirdAttribute LIKE @0";
   var result = db.Query(sql, term);
    var data = result.Select(p => new{label = p.attribute + " " + p.secondAttribute});
    Json.Write(data, Response.Output);
}

当然,这只是检索textbox的数据,根本不会对返回的复选框进行分隔。有什么方法可以做到这一点吗?

如果根据您的评论,仅客户端搜索是可以接受的,那么这里有一个非常简单的方法:

$(document).ready(function() {
   var $rows = $("tr");

   $("#yoursearchinput").keyup(function() {
       var val = $.trim(this.value);
       if (val === "")
           $rows.show();
       else {
           $rows.hide();
           $rows.has("td:contains(" + val + ")").show();
       }
   });
});
演示:

请注意,以上内容将进行区分大小写的搜索。下面是一个稍微复杂一些的版本,它执行不区分大小写的搜索:

演示:


第二个解决方案是我突然提出的,目的是让您了解总体思路——显然,它可以被整理并提高效率。

完整的用户列表有多长?您可能会考虑将服务器端代码保留为“IS”,并通过客户端代码动态地显示和隐藏行。“NNNNNN,这将是理想的,实际上,请考虑一下。名单不长,但有望增加。我怎么能这么做?这正是我想要的!非常感谢!:)
@{
    var db = Database.Open("database");
    var term = Request.QueryString["term"] + "%";
    var sql = "SELECT * from table where attribute LIKE @0 OR secondAttribute LIKE @0 OR thirdAttribute LIKE @0";
   var result = db.Query(sql, term);
    var data = result.Select(p => new{label = p.attribute + " " + p.secondAttribute});
    Json.Write(data, Response.Output);
}
$(document).ready(function() {
   var $rows = $("tr");

   $("#yoursearchinput").keyup(function() {
       var val = $.trim(this.value);
       if (val === "")
           $rows.show();
       else {
           $rows.hide();
           $rows.has("td:contains(" + val + ")").show();
       }
   });
});
$(function() {
    var $cells = $("td");

    $("#search").keyup(function() {
        var val = $.trim(this.value).toUpperCase();
        if (val === "")
            $cells.parent().show();
        else {
            $cells.parent().hide();
            $cells.filter(function() {
                return -1 != $(this).text().toUpperCase().indexOf(val);
            }).parent().show();
        }
    });
});​