亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

輸入自動提示搜索提示功能的javascript:sugggestion.js

2019-11-20 22:20:36
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

/**
* 功能:該js文件中的代碼實現了[輸入自動搜索提示]功能,如百度、google搜索框中輸入一些字符會以下拉列表形式給出一些提示,提高了用戶體驗
* 使用說明:參見suggestions.txt文件
* Author:sunfei(孫飛) Date:2013.08.21
*/
var SugObj = new Object();

$(document).ready(function(){

//文件加載完成后獲取輸入框屬性信息,確保搜索提示數據和文本輸入框中數據的顯示效果保持一致
//使用搜索提示功能輸入框默認ID
SugObj.keywords_input_id = "keywords_input";
//搜索輸入框高度
SugObj.keywords_input_height = $("#"+SugObj.keywords_input_id+"").height();
//搜索輸入框寬度
SugObj.keywords_input_width = $("#"+SugObj.keywords_input_id+"").width();
//搜索輸入框寬度字體顏色
SugObj.keywords_input_color = $("#"+SugObj.keywords_input_id+"").css("color");
//搜索輸入框寬度字體大小
SugObj.keywords_input_font_size = $("#"+SugObj.keywords_input_id+"").css("font-size");
//用戶輸入的值
SugObj.keywords_input_value = null;

//設置顯示搜索提示div的樣式
//顯示提示信息的DIV的ID
SugObj.suggestion_div_id = "sug_layer_div";
//默認的提示信息DIV樣式
$("#"+SugObj.suggestion_div_id+"").addClass("sugLayerDiv");
//根據輸入框設置DIV寬度
$("#"+SugObj.suggestion_div_id+"").css("width",SugObj.keywords_input_width);
//$("#"+SugObj.suggestion_div_id+"").css("position","relative");
//$("#"+SugObj.suggestion_div_id+"").css("overflow","hidden");//DIV 內容溢出時隱藏
//$("#"+SugObj.suggestion_div_id+"").css("background","#fff");//DIV 背景顏色
//$("#"+SugObj.suggestion_div_id+"").css("border","#c5dadb 1px solid");//DIV 邊框樣式
//$("#"+SugObj.suggestion_div_id+"").css("display","none");//DIV 初始隱藏

//提示結果默認顯示提示數目
SugObj.default_showItem_count = 10;
//設定點擊"more"所顯示數目
SugObj.more_showItem_count = 20;
//標記上下鍵時所處位置
SugObj.cursor_now_position = -1;
});


//性能考慮:如果用戶每輸入一個字母就立即往服務器傳的的話,服務器的承載就會過大,
//于是考慮可以將每次請求延遲0.5s發送(待考慮)

$(document).ready(function(){

//輸入框的id為keywords_input,這里監聽輸入框的keyup事件
$("#"+SugObj.keywords_input_id+"").keyup(function(event){
if((event.keyCode >= 48 && event.keyCode <=57) || (event.keyCode >= 96 && event.keyCode <= 105) ||
(event.keyCode >= 65 && event.keyCode <= 90 || event.keyCode == 8)) {
//獲取輸入框的值ֵ
var kw = $("#"+SugObj.keywords_input_id+"").val();
//去掉輸入字符串兩端的空格
kw = kw.replace(/(^/s*)|(/s*$)/g,"");
if (kw == "") {
//清空DIV內容
$("#"+SugObj.suggestion_div_id+"").empty();
//隱藏DIV
$("#"+SugObj.suggestion_div_id+"").css("display","none");
} else {
//將用戶輸入值保存到SugObj對象中
SugObj.keywords_input_value = kw;
//運行Ajax請求結果
runSearchAjax(0);
}
}else if(event.keyCode == 38) { //Up Arrow
if (--SugObj.cursor_now_position == -1) {//判斷自減一后是否已移到文本框
$("#"+SugObj.keywords_input_id+"").val(SugObj.keywords_input_value);
//去掉提示結果的樣式 #fff-白色
$("#showDataTable tr.line").css("background","#fff");
}else if(SugObj.cursor_now_position == -2) {//已在文本框后按Up-Arrow移到最后一行
//搜索提示結果索引從0開始
var index = $("#showDataTable tr.line").length - 1;
//搜索提交結果為0,則返回
if (index < 0) {
return;
}
//取最后一個提示結果
$("#"+SugObj.keywords_input_id+"").val($($("#showDataTable tr.line")[index]).text());
$($("#showDataTable tr.line")[index]).siblings().css("background","#fff").end().css("background","#c0c0c0");
SugObj.cursor_now_position = index;
}else {
$("#"+SugObj.keywords_input_id+"").val($($("#showDataTable tr.line")[SugObj.cursor_now_position]).text());
$($("#showDataTable tr.line")[SugObj.cursor_now_position]).siblings().css("background","#fff").end().css("background","#c0c0c0");
}
}else if(event.keyCode == 40) { //Down Arrow
var trCount = $("#showDataTable tr.line").length;
if (++SugObj.cursor_now_position == trCount) {//判斷加一操作后cursor_now_position值是否超出列表數目界限
//超出的話就將cursor_now_position值變為初始值
SugObj.cursor_now_position = -1;
//并將文本框中值設為用戶用于搜索
$("#"+SugObj.keywords_input_id+"").val(SugObj.keywords_input_value);
//去掉提示結果的樣式
$("#showDataTable tr").css("background","#fff");
}else {
$("#"+SugObj.keywords_input_id+"").val($($("#showDataTable tr.line")[SugObj.cursor_now_position]).text()); //將當前結果顯示在輸入框中
$($("#showDataTable tr.line")[SugObj.cursor_now_position]).siblings().css("background","#fff").end().css("background","#c0c0c0");
}
}//End if
});

//光標離開輸入框時隱藏搜索提示
$("#"+SugObj.keywords_input_id+"").blur(function(){

var intId = window.setInterval(function(){
$("#"+SugObj.suggestion_div_id+"").css("display","none");
window.clearInterval(intId);
},200);

$("#"+SugObj.suggestion_div_id+" tr.line").click(function(){
window.clearInterval(intId);
$("#"+SugObj.keywords_input_id+"").val($(this).text());
$("#"+SugObj.keywords_input_id+"").focus();
SugObj.cursor_now_position = -1;
runSearchAjax(0);
});

$("#"+SugObj.suggestion_div_id+" tr.moreline").click(function(){
window.clearInterval(intId);
$("#"+SugObj.keywords_input_id+"").focus();
SugObj.cursor_now_position = -1;
runSearchAjax(1);
});
});

});

//isMore為1:多于二十條則只顯示二十條,少于二十條,則有多少顯示多少
//isMore為0:多于十條則只顯示十條,少于十條,則有多少顯示多少
function runSearchAjax(isMore) {
$.ajax({
type:"GET",
dataType:"json",
url:$("#"+SugObj.keywords_input_id+"").attr("searchURL"),
data:{
"keywords_input":escape($("#"+SugObj.keywords_input_id+"").val())
},
success:function(data,status) {
if (data.sugList == null || data.sugList == undefined || data.sugList.length == 0) {
$("#"+SugObj.suggestion_div_id+"").empty();
$("#"+SugObj.suggestion_div_id+"").css("display","none");
} else {
//var result = $.parseJSON(data.sugList);
var result = data.sugList;
var dataArray = [];
$.each(result,function(i,value){
dataArray.push(value);
});
//獲取記錄的個數
var dataItemLength = dataArray.length;
if (dataItemLength <= 0) {
return; //搜索提交結果為0,則返回
}

var layerLabel = [];
layerLabel.push(" <table id='showDataTable' width='100%'> ");//創建一個table
if (isMore == 0) {
if (dataItemLength <= SugObj.default_showItem_count) {
for (var i = 0; i < dataItemLength; ++i) {
layerLabel.push(" <tr style='cursor:pointer;color:"+SugObj.keywords_input_color+";font-size:"+SugObj.keywords_input_font_size+"' ");
layerLabel.push(" class='line' ><td>"+dataArray[i]+"</td></tr> ");
}
}else{
for (var i = 0; i < SugObj.default_showItem_count; ++i) {
layerLabel.push(" <tr style='cursor:pointer;color:"+SugObj.keywords_input_color+";font-size:"+SugObj.keywords_input_font_size+"' ");
layerLabel.push(" class='line' ><td>"+dataArray[i]+"</td></tr>");
}
layerLabel.push(" <tr style='cursor:pointer;color:"+SugObj.keywords_input_color+";font-size:"+SugObj.keywords_input_font_size+"' ");
layerLabel.push(" class='moreline'><td style='padding-left:"+(SugObj.keywords_input_width-56)+"px'> ");
layerLabel.push(" <span style='cursor:pointer;'>more...</span></td></tr> ");
}
}else if (isMore == 1) {
if (dataItemLength <= SugObj.more_showItem_count) {
for (var i = 0; i < dataItemLength; ++i) {
layerLabel.push(" <tr style='cursor:pointer;color:"+SugObj.keywords_input_color+";font-size:"+SugObj.keywords_input_font_size+"' ");
layerLabel.push(" class='line' ><td>"+dataArray[i]+"</td></tr> ");
}
}else{
for (var i = 0; i < SugObj.more_showItem_count; ++i) {
layerLabel.push(" <tr style='cursor:pointer;color:"+SugObj.keywords_input_color+";font-size:"+SugObj.keywords_input_font_size+"' ");
layerLabel.push(" class='line' ><td>"+dataArray[i]+"</td></tr> ");
}
}
}else{
for (var i = 0; i < dataItemLength; ++i) {
layerLabel.push(" <tr style='cursor:pointer;color:"+SugObj.keywords_input_color+";font-size:"+SugObj.keywords_input_font_size+"' ");
layerLabel.push(" class='line' ><td>"+dataArray[i]+"</td></tr> ");
}
}
layerLabel.push("</table>");
var layer = layerLabel.join("");
//顯示DIV
$("#"+SugObj.suggestion_div_id+"").css("display","block");
//先清空#searchResult下的所有子元素
$("#"+SugObj.suggestion_div_id+"").empty();
//將剛創建的table插入到#searchResult內
$("#"+SugObj.suggestion_div_id+"").append(layer);
$("#showDataTable tr").css("color",SugObj.keywords_input_color);
$("#showDataTable tr").css("font-size",SugObj.keywords_input_font_size);
//監聽提示框的鼠標懸停事件
$("tr.line").hover(function(){
$("tr.line").css("background","#fff");
$(this).css("background","#c0c0c0");
},function(){
$(this).css("background","#fff");
});
}
}
});
}

//輸入框的坐標發生變化
function ChangeCoords() {
//獲取距離最左端的距離,像素,整型
var left = $("#"+SugObj.keywords_input_id+"").offsetLeft;
//獲取距離最頂端的距離,像素,整型
var top = $("#"+SugObj.keywords_input_id+"").offsetTop+keywords_input_height;
//重新定義CSS屬性
$("#"+SugObj.suggestion_div_id+"").css("left",left+"px");
$("#"+SugObj.suggestion_div_id+"").css("top",top+"px");
}

//監聽搜索提示結果的鼠標單擊事件
function hoverAction(data) {
//隱藏搜索提示DIV
$("#"+SugObj.suggestion_div_id+"").css("display","none");
//將點擊數據加入到搜索提示輸入框中
$("#"+SugObj.suggestion_div_id+"").val(data);
//將光標聚焦在搜索提示輸入框中
$("#"+SugObj.suggestion_div_id+"").focus();
//將cursor_now_position值變為初始值
cursor_now_position = -1;
//運行Ajax方法,向服務器發送請求
runSearchAjax(0);
}

//窗體的大小改變會觸發resize()事件,只需在該事件內調用ChangeCoords()方法即可
$(window).resize(ChangeCoords);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲毛片在线看| 亚洲成人久久网| 色爱精品视频一区| 久久人人爽人人爽人人片av高请| 国产精品视频资源| 亚洲欧美日韩天堂| 日韩极品精品视频免费观看| 欧美日韩国产成人| 91国产美女视频| 欧美大片在线看| 欧美午夜久久久| 插插插亚洲综合网| 日韩在线观看av| 国产欧美精品一区二区三区介绍| 日韩电视剧在线观看免费网站| 91精品国产91久久久久| 97国产成人精品视频| www.日韩.com| 91精品国产九九九久久久亚洲| 成人欧美一区二区三区在线湿哒哒| 国产成人精品一区二区在线| 98午夜经典影视| 欧美成人午夜激情| 欧美日韩综合视频| 日韩美女在线观看一区| 三级精品视频久久久久| 亚洲高清色综合| 最近2019中文免费高清视频观看www99| 亚洲成人动漫在线播放| 亚洲女同性videos| 久久99久国产精品黄毛片入口| 日韩视频中文字幕| 欧美在线视频网站| 欧洲成人午夜免费大片| 97在线免费观看视频| 欧美日韩国产在线| 成人免费网站在线| 亚洲欧美日韩久久久久久| 高清欧美一区二区三区| 国产亚洲美女精品久久久| 成人黄色av播放免费| 精品中文视频在线| 91av在线免费观看| 中文字幕欧美亚洲| 久久精品国产2020观看福利| 久久影视三级福利片| 欧美性做爰毛片| 欧美性猛交xxxx乱大交3| 国产精品久久久久久av| 欧美电影免费看| 91亚洲精华国产精华| 久久国产精品久久久久| 亚洲经典中文字幕| 欧美性黄网官网| 欧美成人在线网站| 成人欧美在线视频| 欧美大尺度电影在线观看| 国产精品高清在线观看| 欧美成人网在线| 国产精品一区二区久久| 精品亚洲一区二区三区在线观看| 欧美激情国产日韩精品一区18| 日韩中文字幕视频在线观看| 国产999在线观看| 日韩免费在线免费观看| 欧美性猛交丰臀xxxxx网站| 欧美国产精品人人做人人爱| 亚洲国内精品视频| 精品福利在线看| 久久91亚洲人成电影网站| 亚洲影院污污.| 一本一道久久a久久精品逆3p| 国产精品美女主播在线观看纯欲| 欧美日韩免费一区| 国产亚洲视频中文字幕视频| 久久亚洲国产精品成人av秋霞| 久久视频免费在线播放| 2019日本中文字幕| 久久久久成人网| 九九久久久久久久久激情| 成人福利在线视频| 欧美成人sm免费视频| 亚洲成人av片在线观看| 国产成人综合亚洲| 伊人青青综合网站| 欧美香蕉大胸在线视频观看| 日韩精品丝袜在线| 国产有码在线一区二区视频| 国产91精品青草社区| 亚洲aa在线观看| 91精品国产自产在线观看永久| 欧美网站在线观看| 91欧美精品午夜性色福利在线| 91久久夜色精品国产网站| 国产一区二区日韩精品欧美精品| 日韩电影中文字幕在线观看| 伦理中文字幕亚洲| 亚洲石原莉奈一区二区在线观看| 91麻豆国产语对白在线观看| 亚洲一区中文字幕| 国产精品久久久久久五月尺| 国产精品黄色影片导航在线观看| 日本高清+成人网在线观看| 国产精品久久久91| 亚洲一区二区免费在线| 日韩中文字幕精品| 日韩欧美在线视频观看| 97色在线播放视频| 日本亚洲欧美三级| 欧美日韩成人在线播放| 欧美激情手机在线视频| 欧美华人在线视频| 久久国产精品视频| 日韩中文字幕第一页| 亚洲国产精品久久久| 亚洲欧美日韩天堂一区二区| 久久久影视精品| 中文字幕国产精品久久| 中文字幕久热精品在线视频| 国产91免费观看| 久久影院资源网| 久久99久国产精品黄毛片入口| 亚洲精品国产综合久久| 国产精品27p| 亚洲人成毛片在线播放| 97婷婷大伊香蕉精品视频| 色偷偷噜噜噜亚洲男人的天堂| 68精品国产免费久久久久久婷婷| 久久91亚洲人成电影网站| 国产香蕉一区二区三区在线视频| 亚洲一区第一页| 亚洲a成v人在线观看| 成人免费看黄网站| 久久久久久999| 欧美午夜丰满在线18影院| 欧美日韩ab片| 久久天天躁狠狠躁夜夜躁2014| 俺也去精品视频在线观看| 九九热精品视频在线播放| 精品久久久久久国产| 国产91精品在线播放| 久久91超碰青草是什么| 高清欧美性猛交xxxx| 国产精品一区二区av影院萌芽| 亚洲一区二区三区四区在线播放| 欧美第一页在线| 国产精品视频永久免费播放| 人妖精品videosex性欧美| 欧美大尺度在线观看| 欧美又大粗又爽又黄大片视频| 日韩欧美a级成人黄色| 亚洲国产一区二区三区四区| 国产在线播放91| 欧美巨乳美女视频| 色777狠狠综合秋免鲁丝| 伊人男人综合视频网| 日韩精品一区二区视频| 精品久久久999| 精品国产老师黑色丝袜高跟鞋| 欧美剧在线观看| 日韩美女在线观看| 操日韩av在线电影| 欧美激情久久久久| 91精品久久久久久久久不口人|