博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AJAX实现仿Google Suggest效果
阅读量:6765 次
发布时间:2019-06-26

本文共 2529 字,大约阅读时间需要 8 分钟。

修复了一些细节代码(支持持续按键事件) 

*项目名称:AJAX实现类Google Suggest效果
*作者:草履虫(也就是蓝色的ecma)
*联系:caolvchong@gmail.com
*时间:2007-7-7
*工具: DreamWeaver(写ASP),Aptana(写Javascript,HTML和CSS),Emeditor(写这篇文章),Access2003(数据库)
*测试平台:Firefox2.0,IE6.0,IE7.0
*演示地址:http://finish.3322.org/suggest/index.htm(短期有效,在本机上,可能访问不顺畅)
*原文地址:http://cceer.xmu.edu.cn/blog/view.asp?id=55(转贴,使用请注明)
*:文件结构:
  index.htm:首页,展现效果
  ajax_result.asp:ajax调用后台返回结果文件
  result.asp:搜索结果文件,这个我并没有做,具体功能根据需求来写
  数据库(suggest.mdb):
    id:自动编号
    keyword:关键字
    seachtimes:被搜索次数
    matchnum:匹配的文章数目(关于这个方面想了蛮久,如何取得文章数呢,不能是搜索时动态产生,不然在偌大数据库中查询费时费力.那么必然是在后台某个时候去其他的数据库表中添加的,原来想把这方面也做了,但限于算法的不成熟和时间的限制.所以就用了随机数来替换.)
*补充:
  和google suggest还有一些差距,比如一直按着方向键问题和其他细节问题,这些都有待改进.
*效果图:

var j=-1; var temp_str; var $=function(node){ return document.getElementById(node); } var $$=function(node){ return document.getElementsByTagName(node); } function ajax_keyword(){ var xmlhttp; try{   xmlhttp=new XMLHttpRequest();   } catch(e){   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");   } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4){   if (xmlhttp.status==200){    var data=xmlhttp.responseText;    $("suggest").innerHTML=data;    j=-1;    }   } } xmlhttp.open("post", "ajax_result.asp", true); xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xmlhttp.send("keyword="+escape($("keyword").value));  }   function keydeal(e){ var keyc; if(window.event){   keyc=e.keyCode;   } else if(e.which){   keyc=e.which;   } if(keyc!=40 && keyc!=38){   ajax_keyword();   temp_str=$("keyword").value;   } if(keyc==40 || keyc==38){   if(keyc==40){    if(j<$$("li").length){     j++;     if(j>=$$("li").length){      j=-1;     }    }   if(j>=$$("li").length){    j=-1;   } }   if(keyc==38){    if(j>=0){     j--;     if(j<=-1){      j=$$("li").length;     }    }    else{     j=$$("li").length-1;    }   }   set_style(j);   if(j>=0 && j<$$("li").length){    $("keyword").value=$$("li")[j].childNodes[0].nodeValue;    }   else{    $("keyword").value=temp_str;    }   } } function set_style(num){ for(var i=0;i<$$("li").length;i++){   var li_node=$$("li");   li_node.className="";   } if(j>=0 && j<$$("li").length){   var i_node=$$("li")[j];   $$("li")[j].className="select";   } } function mo(nodevalue){ j=nodevalue; set_style(j); } function form_submit(){ if(j>=0 && j<$$("li").length){ $$("input")[0].value=$$("li")[j].childNodes[0].nodeValue; } document.search.submit(); } function hide_suggest(){ var nodes=document.body.childNodes for(var i=0;i

 

转载于:https://www.cnblogs.com/ranran/p/3713659.html

你可能感兴趣的文章
Windows Security Login
查看>>
远程服务和本地服务
查看>>
SpringAOP小结
查看>>
单体内置对象的理解
查看>>
数据结构7_链二叉树
查看>>
使用Newtonsoft将DataTable转Json
查看>>
缓存类
查看>>
Spark RDD Transformation 简单用例(三)
查看>>
分治法理论
查看>>
澄甫先生谓古人练拳分四步功夫
查看>>
第八天
查看>>
C# Lambda表达式
查看>>
Android Studio中多项目共享Library
查看>>
用java的io流,将一个文本框的内容反转
查看>>
python: 不同级别的日志输出到不同文件的日志类
查看>>
[LeetCode] Trapping Rain Water
查看>>
linux下下载redis,并且编译
查看>>
FirstOrDefault()的重载方法
查看>>
SumElemet
查看>>
团队编程
查看>>