Javascript 击键时的动态搜索结果
我有一个存储在数据库中的项目列表 我使用foreach列出返回的项目,每个项目旁边都有一个复选框,如下所示: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
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();
}
});
});