Sim*_*ely 4 javascript jquery json jquery-ui autocomplete
我有一个存储在数据库中的项目列表.
我使用foreach列出返回的项目,每个项目旁边都有一个复选框,如下所示:
var db = Database.Open("database");
var sql = "SELECT * from table";
var result = db.Query(sql);
Run Code Online (Sandbox Code Playgroud)
...
@{foreach (var user in result) {
<tr><td>@table.attribute</td> <td>@table.secondAttribute @table.thirdAttribute</td>
<td><input type="checkbox" name="attribute" value="attribute" /></td></tr>
Run Code Online (Sandbox Code Playgroud)
我想要的功能是一个文本框,当用户键入一个字母时,将根据用户输入的字符限制我的foreach列出的项目数.所以我试图使用JQuery autoComplete模块,但我不完全确定如何在这种情况下使用它,或者即使它是可能的.
所以我补充说:
$(function(){
$('#name').autocomplete({source:'getUsers'});
});
Run Code Online (Sandbox Code Playgroud)
...输入他们的名字:
然后在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);
}
Run Code Online (Sandbox Code Playgroud)
当然,这只是检索文本框的数据,并且根本不会分隔返回的复选框.有没有办法可以做到这一点?
如果根据您的评论,只接受客户端搜索,这是一个非常简单的方法:
$(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();
}
});
});
Run Code Online (Sandbox Code Playgroud)
请注意,上面将进行区分大小写的搜索.这是一个稍微复杂的版本,它执行不区分大小写的搜索:
$(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();
}
});
});?
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/k5hkR/1/
第二种解决方案只是我掀起的一些东西,为您提供了一般性的想法 - 显然它可以整理并提高效率.
归档时间: |
|
查看次数: |
13629 次 |
最近记录: |