复制谷歌搜索建议UI
Replicating Google Search Suggestions UI
你好,我正在尝试做一些类似谷歌搜索建议的事情。
我目前的实现工作得很好,(它使用一个表,其中包含动态填充的行列表)
问题是,我不知道如何设置keyup和keydown事件导航通过行像谷歌搜索建议。我如何使用javascript在表行中导航,然后将当前选择的值拉入搜索框。我最初设法做到了这一点,但是当鼠标悬停在一行上时,我的实现就会中断。
我唯一的限制是,由于行生成的方式,我实际上不能向行本身添加任何代码。只有表和元素。
下面是我实现的一些代码(当鼠标悬停在行上时不起作用)注意:行有一个定义的CSS类来给出高亮显示。
var element = document.getElementById("PeriodListFrom");
element.onkeyup = function (e) {
var keyCode = (window.event) ? window.event.keyCode : e.keyCode;
var table = document.getElementById("PeriodListFrom_Search").children[0];
var html = {
innerHtml: "",
matchCount: 0,
addRow: function (id, string) {
this.innerHtml += "<tr id='" + id + "'><td>" + string + "          </td></tr>";
this.matchCount++;
}
};
if ($("#PeriodListFrom").val() == "") {
$("#PeriodListFrom_Search").hide();
return;
}
// Navigate down
if(keyCode==40){
var selectedIndex = 0;
// Search the table for highlighted rows
for(var i = 0; i<table.rows.length; i++){
if( $(table.rows[i]).css("background-color") != "rgba(0, 0, 0, 0)"){
// Reset the color of the last index
$(table.rows[i]).css("cursor","");
$(table.rows[i]).css("background-color","");
selectedIndex = i+1;
break;
}
}
$(table.rows[selectedIndex]).css("cursor","default");
$(table.rows[selectedIndex]).css("background-color","#FFF2E3");
}
else if(keyCode==13) {
for(var i = 0; i<table.rows.length; i++){
if( $(table.rows[i]).css("background-color") != "rgba(0, 0, 0, 0)"){
$("#PeriodListFrom").val(table.rows[i].id);
break;
}
}
document.getElementById("PeriodListFrom").onblur();
} else if(keyCode == 38) {
var selectedIndex = 0;
// Search the table for highlighted rows
for(var i = 0; i<table.rows.length; i++){
if( $(table.rows[i]).css("background-color") != "rgba(0, 0, 0, 0)"){
// Reset the color of the last index
$(table.rows[i]).css("cursor","");
$(table.rows[i]).css("background-color","");
selectedIndex = i-1;
break;
}
}
$(table.rows[selectedIndex]).css("cursor","default");
$(table.rows[selectedIndex]).css("background-color","#FFF2E3");
} else { // Actually searching
var matches = PeriodManager.Search($("#PeriodListFrom").val());
for (var i = 0; i < matches.length && i < 10; i++) {
html.addRow(matches[i], matches[i]);
}
if (html.matchCount > 0) {
$(table).html(html.innerHtml);
$("#PeriodListFrom_Search").show();
} else {
$("#PeriodListFrom_Search").hide();
}
}
}
您的应用程序是用什么实现的?
如果你使用ASP。NET MVC,你可以做得比使用Telerik的ASP更糟糕。. NET MVC扩展并利用它们的自动完成控件
相关文章:
- Angular UI Select2指令搜索功能不起作用
- 使用 jQuery UI 折叠面板显示 couchDB 数据库搜索结果时出现问题
- 谷歌应用程序脚本搜索UI下一个和上一个功能
- 在Backbone Collections中搜索,使用React更新UI
- JQuery UI 地图搜索不起作用
- jquery-ui 自动完成仅允许从多个 JSON 结果中按名称搜索
- 语义 UI:访问搜索组件选定项
- 语义 UI 搜索 - 筛选器字段
- 使用语义 UI 框架和 ajax 请求的自动完成或提前键入搜索框
- Angularj UI 网格搜索
- jQuery UI自动完成-基于json节点的搜索
- jQuery UI:自动完成-如何在数组中搜索多个值
- 使用JQuery UI自动完成从JSON搜索数据不起作用
- 带有API.js的语义UI搜索选择下拉菜单-未发生API调用
- Jquery UI自动完成与ajax自定义搜索不工作
- jQuery UI自动完成:清除以前的搜索项
- 应用搜索剑道UI网格与角
- 在语义UI搜索下拉列表中获得未定义值
- 是否在单击时使语义UI搜索选择下拉滚动到所选项目
- 语义UI搜索自定义数据源