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

首頁 > 編程 > ASP > 正文

asp+ajax仿google搜索提示效果代碼

2024-05-04 11:08:36
字體:
來源:轉載
供稿:網友
前段時間想用google suggest在網上找了很多都不盡人意,于是自己花了些時間寫了一個,跟google suggest 基本一樣,后面的約多少結果非本程序范圍哦。
 
 
 
對于更完整的代碼可以參考,這個是支持數據庫的版本。經過腳本之家編輯測試。
Asp+Ajax仿google搜索提示效果 數據庫版
需要修改的地方有 
復制代碼代碼如下:

javascript.js 
var url="ajax.asp"; //后臺地址 
var time_delayajax=300; //搜索延遲 
var time_delayupdown=100; //方向鍵延遲 
obj_div.style.top = (xtop + 20) + "px"; //20差不多是輸入框的高度,請根據實際情況調整 
ajax_xmlhttp.send("sift_value="+escape(temp_value)); //提交到后臺的值 
dd=d+"<li onmouseover=/"overli("+i+");/" onmousedown=/"downli("+i+")/" onmouseup=/"upli("+i+",event)/" onmousemove=/"moveli();/"><span>約"+c[1]+"結果</span>"+c[0]+"</li>";//****li的顯示 

后臺輸出結果格式必需為'文本1,文本2'..... 
'java,2''javascript,11''java示例,22'等 
default.css 
復制代碼代碼如下:

.ajaxsearch { 
width:300px; //提示層的寬度 

首頁index.html 
復制代碼代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<link rel="stylesheet" type="text/css" href="default.css" /> 
<script language="JavaScript" src="javascript.js" type="text/javascript"></script> 
<title>Google suggest高仿示例</title> 
</head> 
<body onResize="removediv();"> 
<div style="margin:20px 50px"> 
<input style="width:298px;height:18px" type="text" autocomplete="off" onBlur="blurdeal();" onKeyDown="keydowndeal(event);" onFocus="focusdeal(event);" /> 
</div> 
</body> 
</html> 

腳本javascript.js 
復制代碼代碼如下:

///////////////////////////////搜索提示框///////////////////////////////// 
var obj_div; //提示層對象 
var obj_input; //輸入框對象 
var main_delay; //判斷值變化延遲對象 
var ajax_delay; //ajax延遲搜索對象 
var updown_delay; //方向鍵延遲對象 
var ajax_xmlhttp; //ajax對象 
var div_word=null; //當前提示層對應的搜索值 
var li_num=-1; //偽光標位置,提示層被選中的li序號,從0開始 
var li_down=-1; //鼠標按下提示層的序號 
var value_ed=""; //輸入框延遲前的值 
var value_ing=""; //輸入框當前的值 
var value_unexit=""; //搜索過沒有結果的值開頭 
var updown_run=false; //允許方向鍵上下 
var ajax_run=false; //true為正常進程,false停止ajax 
var ajax_run_ing=false; //true正在運行,false空閑 
var input_focus=false; //文本框焦點 
var url="ajax.asp"; //后臺地址********************************************************** 
var time_delayajax=300; //搜索延遲********************************************************** 
var time_delayupdown=100; //方向鍵延遲******************************************************** 
var $=function(Fun_id){ 
return document.getElementById(Fun_id); 

try{ 
ajax_xmlhttp= new ActiveXObject('Msxml2.XMLHTTP'); 
}catch(e){ 
try{ 
ajax_xmlhttp= new ActiveXObject('Microsoft.XMLHTTP'); 
}catch(e){ 
try{ 
ajax_xmlhttp= new XMLHttpRequest(); 
}catch(e){ajax_xmlhttp=null;} 


////////////////////////創建提示層//////////////////////// 
function createajaxdiv(){ 
var create_div = document.createElement("div"); 
create_div.type = "div"; 
var promptdiv = document.body.appendChild(create_div); 
promptdiv.className = "ajaxsearch"; 
obj_div=promptdiv; 

////////////////////////設置提示層位置//////////////////////// 
function removediv(){ 
if(!obj_div || !obj_input)return false; 
if(obj_div.style.display=="none")return false; 
var obj=obj_input; 
var xtop=0; 
var xleft=0; 
while(obj){ 
xtop += obj["offsetTop"]; 
xleft += obj["offsetLeft"]; 
obj = obj.offsetParent; 

obj_div.style.left = xleft + "px"; 
obj_div.style.top = (xtop + 20) + "px"; //20差不多是輸入框的高度,請根據實際情況調整************************************************************8 
li_down=-1; 

////////////////////////隱藏提示層//////////////////////// 
function hideajaxdiv(){ 
obj_div.style.display="none"; 
li_down=-1; 

////////////////////////設置被選<li>css樣式//////////////////////// 
function setlistyle(){ 
for(var i=0;i<obj_div.firstChild.childNodes.length;i++){ 
obj_div.firstChild.childNodes[i].id=""; 

if(li_num!=-1)obj_div.firstChild.childNodes[li_num].id="liseleted"; 

////////////////////////鼠標經過提示層//////////////////////// 
function overli(Fun_seletedlinum){ 
if(li_num==-1)value_ing=obj_input.value; 
li_num=Fun_seletedlinum; 
setlistyle(); 

////////////////////////鼠標拖動提示層//////////////////////// 
function moveli(){ 
if(window.getSelection){ 
setfocus(); 
window.getSelection().removeAllRanges(); 
}else{ 
document.selection.empty(); 
setfocus(); 


////////////////////////鼠標按下提示層//////////////////////// 
function downli(Fun_seletedlinum){ 
if(!obj_input)return false; 
li_down=Fun_seletedlinum; 
input_focus=true; 

////////////////////////鼠標彈起提示層//////////////////////// 
function upli(Fun_seletedlinum,Fun_event){ 
if(!obj_input)return false; 
if(Fun_event.button==2){li_down=-1;return} 
if(li_down!=Fun_seletedlinum){ 
li_down=-1; 
return false; 

clearTimeout(ajax_delay); 
clearTimeout(updown_delay); 
updown_run=true; 
ajax_run=false; 
ajax_run_ing=false; 
li_num=-1; 
div_word=null; 
value_ed=obj_div.firstChild.childNodes[Fun_seletedlinum].childNodes[1].nodeValue; 
obj_input.value=value_ed; 
value_ing=value_ed; 
hideajaxdiv(); 
obj_div.innerHTML=""; 

////////////////////////設置文本框獲取焦點/////////////////////// 
function setfocus(){ 
if(window.event){ 
var r = obj_input.createTextRange(); 
r.moveStart('character',obj_input.value.length); 
r.collapse(true); 
r.select(); 
}else{ 
obj_input.selectionStart=obj_input.value.length; 
obj_input.focus(); 


////////////////////////文本框失去焦點//////////////////////// 
function blurdeal(){ 
if(input_focus==true){ 
setfocus(); 
setTimeout("setfocus()"); 
return false; 

updown_run=false; 
ajax_run=false; 
ajax_run_ing=false; 
clearInterval(main_delay); 
clearTimeout(ajax_delay); 
clearTimeout(updown_delay); 
hideajaxdiv(); 
if(value_ed!=obj_input.value)obj_div.innerHTML=""; 

////////////////////////文本框獲取焦點//////////////////////// 
function focusdeal(Fun_event){ 
if(!obj_div)createajaxdiv(); 
if(input_focus==true){ 
input_focus=false; 
return false; 

var obj=((window.event)?Fun_event.srcElement:Fun_event.target); 
if(obj.type!="text")return false; 
updown_run=true; 
ajax_run=true; 
ajax_run_ing=false; 
if(obj_input==obj && value_ed==obj.value && obj_div.innerHTML!=""){ 
obj_div.style.display="block"; 
removediv(); 
}else{ 
obj_input=obj; 
value_ed=obj.value; 
value_ing=obj.value; 
value_unexit=""; 
li_num=-1; 
li_down=-1; 
div_word=null; 
obj_div.innerHTML=""; 
removediv(); 

main_delay=setInterval("mainajax()",10); 

////////////////////////主函數//////////////////////// 
function mainajax(){ 
if(value_ed==obj_input.value)return false; 
if(value_unexit!="" && (obj_input.value).indexOf(value_unexit)==0){hideajaxdiv();obj_div.innerHTML="";return false;} 
if(value_ed!=obj_input.value && ajax_run_ing==false){ 
ajax_run=true; 
value_ed=obj_input.value; 
clearTimeout(ajax_delay); 
if(obj_input.value!=""){ 
ajax_delay=setTimeout("getsearch();",time_delayajax); 
}else{ 
hideajaxdiv(); 
obj_div.innerHTML=""; 
ajax_run=false; 
return false; 



////////////////////////獲取搜索內容//////////////////////// 
function getsearch(){ 
var temp_value=obj_input.value; 
if(ajax_xmlhttp==null){ 
return false; 
}else if(ajax_xmlhttp.readyState!=0){ 
ajax_xmlhttp.abort(); 
ajax_run_ing=false; 

ajax_xmlhttp.onreadystatechange=function(){ 
if(ajax_run==false){ajax_xmlhttp.abort();ajax_run_ing=false;return false;} 
if(ajax_xmlhttp.readyState==4){ 
obj_div.innerHTML=""; 
if(ajax_xmlhttp.status==200 || ajax_xmlhttp.status==304){ 
var contant=ajax_xmlhttp.responseText; 
if(contant!="" && ajax_run==true){ 
div_word=temp_value; 
obj_div.innerHTML=resetcontant(contant); 
obj_div.style.display="block"; 
removediv();removediv(); 
}else{ 
hideajaxdiv(); 

updown_run=true; 
ajax_run_ing=false; 
li_num=-1; 
if(contant=="")value_unexit=temp_value; 



ajax_xmlhttp.open("post",url,true); 
ajax_xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
ajax_run_ing=true; 
ajax_xmlhttp.send("sift_value="+escape(temp_value)); //提交到后臺的值***************************************** 

////////////////////////內容重組/////////////////////// 
function resetcontant(Fun_contant){ 
if(Fun_contant==null || Fun_contant=="")return ""; 
var a=Fun_contant.substring(1,Fun_contant.length-1); 
if(Fun_contant==null || Fun_contant=="")return ""; 
var b=a.split("''"); 
var c; 
var d; 
d="<ul>"; 
for(var i in b){ 
c=b[i].split(","); 
//*************************************************************** 
d=d+"<li onmouseover=/"overli("+i+");/" onmousedown=/"downli("+i+")/" onmouseup=/"upli("+i+",event)/" onmousemove=/"moveli();/"><span>約"+c[1]+"結果</span>"+c[0]+"</li>"; 
//*************************************************************** 

d=d+"<li onmousedown=/"input_focus=true;li_down=-1;/" onmouseup=/"li_down=-1/" onmousemove=/"moveli();/"><span><a class=/"shutajaxdiv/" onclick=/"hideajaxdiv();/">關閉</a></span></li>" 
d=d+"</ul>"; 
return d; 

////////////////////////鍵盤事件//////////////////////// 
function keydowndeal(Fun_event){ 
var keyc=((window.event)?Fun_event.keyCode:Fun_event.which); 
if(keyc==13){hideajaxdiv();return false;} 
if(keyc==27){ 
if(obj_div.style.display=="block" && li_num>-1)value_ed=obj_input.value=value_ing; 
hideajaxdiv(); 
return false; 

if(keyc==40 || keyc==38){ 
if(div_word==obj_input.value && obj_div.style.display=="none" && obj_div.innerHTML!=""){ 
obj_div.style.display="block"; 
removediv(); 
return false; 

if(li_num==-1){ 
if(div_word!=obj_input.value)return false; 
}else{ 
if(div_word!=value_ing)return false; 

if(updown_run==false || ajax_run_ing==true || obj_div.style.display=="none")return false; 
updown_delay=setTimeout("updownli("+keyc+")",time_delayupdown); 
updown_run=false; 


////////////////////////方向鍵移動li//////////////////////// 
function updownli(Fun_key){ 
if(!obj_div){return false;} 
updown_run=true; 
if(li_num==-1){ 
if(div_word!=obj_input.value){hideajaxdiv();obj_div.innerHTML="";li_num=-1;return false;} 
}else{ 
if(div_word!=value_ing){hideajaxdiv();obj_div.innerHTML="";li_num=-1;return false;} 

if(updown_run==false)return false; 
if(li_num==-1)value_ing=value_ed; 
if(Fun_key==40){ 
if(li_num<obj_div.firstChild.childNodes.length-2){ 
li_num++; 
}else{ 
li_num=-1; 


if(Fun_key==38){ 
if(li_num>=0){ 
li_num--; 
}else{ 
li_num=obj_div.firstChild.childNodes.length-2; 


if(li_num!=-1){ 
value_ed=obj_input.value=obj_div.firstChild.childNodes[li_num].childNodes[1].nodeValue; 
}else{ 
value_ed=obj_input.value=value_ing; 

setlistyle(); 

后臺ajax.asp 
復制代碼代碼如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001" %> 
<%option explicit%> 
<%Response.CodePage="65001"%> 
<%Response.Charset="utf-8" %> 
<!--#include file="conn.asp"--> 
<% 
dim Sift_value 
dim Sql,Rs,I,Num 
dim Contant 
Contant="" 
Num=10 
Sift_value=replace(unescape(request.form("sift_value")),"""","""""") 
Sql="select top "&Num&" keyword,matchnum from search where keyword like """&Sift_value&"%"" order by id" 
set Rs=server.CreateObject("adodb.recordset") 
Rs.open Sql,Conn,1,1 
if not (Rs.eof and Rs.bof) then 
for I=0 to Num-1 
Contant=Contant&"'"&rs(0)&","&rs(1)&"'" 
Rs.movenext 
if Rs.eof then exit for 
next 
end if 
response.Write(Contant) 
Rs.close 
set Rs=nothing 
%> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区成人av| 在线中文字幕日韩| 久久69精品久久久久久国产越南| 色综合久久中文字幕综合网小说| 91美女片黄在线观| 777精品视频| 国产欧美日韩免费看aⅴ视频| 欧美极品少妇xxxxⅹ免费视频| 欧美精品xxx| 国产亚洲精品久久久久久牛牛| 国产精品第一页在线| 国产国语videosex另类| 亚洲男人av电影| 91精品视频专区| 综合欧美国产视频二区| 亚洲美女av在线播放| 亚洲免费视频观看| 欧美高清videos高潮hd| 欧美成人午夜剧场免费观看| 91高清视频免费| 亚洲精品www久久久久久广东| 狠狠色狠狠色综合日日小说| 欧美午夜精品久久久久久人妖| 欧美性猛交xxxx久久久| 国产一区欧美二区三区| 国产亚洲欧美日韩精品| 国产精品嫩草影院一区二区| 亚洲精品自拍视频| 亚洲综合成人婷婷小说| 亚洲精品suv精品一区二区| 免费不卡欧美自拍视频| 成人午夜两性视频| 91精品久久久久久久久久久| 亚洲欧美日韩一区在线| 久久99精品久久久久久青青91| 精品久久久av| 亚洲情综合五月天| 欧美亚洲日本网站| 蜜臀久久99精品久久久久久宅男| 伊人青青综合网站| 久久天天躁狠狠躁夜夜av| 日韩欧美亚洲成人| 国产精品自拍偷拍视频| 国产不卡在线观看| 欧美激情18p| 亚洲人成网7777777国产| 欧美极品美女视频网站在线观看免费| 亚洲国产精品一区二区三区| 97在线免费观看视频| 青青草原成人在线视频| 久热精品视频在线| 国产精品一区专区欧美日韩| 国产在线拍偷自揄拍精品| 国产精品6699| 亚洲sss综合天堂久久| 欧美日韩在线免费| 亚洲一区二区免费| 日本精品免费观看| 亚洲综合最新在线| 亚洲精品中文字| 亚州成人av在线| 国模精品系列视频| 欧美日韩一区二区三区| 亚洲色图综合网| 国产精品99久久久久久久久久久久| 国产精品久久久久久久av电影| 一本色道久久综合狠狠躁篇怎么玩| 久久久噜久噜久久综合| 国产精品盗摄久久久| 日韩欧美在线视频| 久久久久久久国产精品| 欧美激情精品久久久久久久变态| 国产精品自产拍在线观看| 亚洲男人av在线| 亚洲国产精品va在看黑人| 亚洲国产精品国自产拍av秋霞| 青青久久aⅴ北条麻妃| 欧美日韩综合视频| 青青青国产精品一区二区| 欧美专区在线播放| 日韩av网址在线观看| 尤物九九久久国产精品的特点| 精品国产乱码久久久久久虫虫漫画| 久久亚洲国产精品| 日韩免费av一区二区| 国产精品美乳一区二区免费| 97色在线观看免费视频| 日韩电影中文字幕在线| 成人伊人精品色xxxx视频| 日韩在线国产精品| 亚洲最新视频在线| 亚洲美女av网站| 日韩av电影在线网| www.国产精品一二区| 国产成人高清激情视频在线观看| 成人黄色av网站| 亚洲美女激情视频| 亚洲精品99久久久久中文字幕| 国产精品第一第二| 欧美性猛交xxxx久久久| 国产v综合ⅴ日韩v欧美大片| 欧美性猛交xxxx黑人猛交| 日韩精品视频在线| 日韩精品高清在线| 久久精品小视频| 久久99久久久久久久噜噜| 国产精品永久在线| 这里只有精品久久| 国产精品久久77777| 精品日韩视频在线观看| 亚洲国产婷婷香蕉久久久久久| 国产精品美女www| 久久免费少妇高潮久久精品99| 狠狠躁天天躁日日躁欧美| 91精品久久久久久综合乱菊| 国产精品久在线观看| 欧美在线观看日本一区| 亚洲精品黄网在线观看| 少妇高潮久久77777| 亚洲xxxx在线| 日本久久久久久久| 97久久久久久| 亚洲黄一区二区| 久久久国产精彩视频美女艺术照福利| 精品在线观看国产| 国产精品久久久久不卡| 色偷偷av一区二区三区乱| 中文字幕无线精品亚洲乱码一区| 欧美成人精品不卡视频在线观看| 91免费看片在线| 91国偷自产一区二区三区的观看方式| 国产精品主播视频| 成人网址在线观看| 国产97人人超碰caoprom| 亚洲欧美中文字幕| 欧美日韩中国免费专区在线看| 日韩视频欧美视频| 亚洲欧美日韩第一区| 91精品久久久久久久久| 黑人巨大精品欧美一区免费视频| 欧美成人免费播放| 亚洲xxx视频| 亚洲小视频在线| 国产欧美一区二区三区在线| 91国产高清在线| 岛国精品视频在线播放| 国产视频精品一区二区三区| 亚洲aaaaaa| 日韩一区二区在线视频| 精品久久久久久中文字幕一区奶水| 欧美电影在线观看完整版| 亚洲a级在线观看| 中文字幕亚洲一区二区三区| 亚洲福利在线看| 黄色精品在线看| 日韩av电影手机在线观看| xxx欧美精品| 久久久久久亚洲精品中文字幕| 国产精品久久久久久久久久久久| 日本成人黄色片| 色青青草原桃花久久综合| 国产精彩精品视频| 九九热99久久久国产盗摄| 亚洲视频视频在线|