JS实现仿google、百度搜索框输入信息智能提示的实现方法


Posted in Javascript onApril 20, 2015

本文实例讲述了JS实现仿google、百度搜索框输入信息智能提示的实现方法。分享给大家供大家参考。具体如下:

<!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>
 <title>仿google、百度搜索框输入信息智能提示的实现</title>
 <style type="text/css" media="screen">
  body
  {
   font: 11px arial;
  }
  .suggest_link
  {
   width:120px;
   background-color: #FFFFFF;
   padding: 2px 6px 2px 6px;
  }
  .suggest_link_over
  {
   width:120px;
   background-color: #E8F2FE;
   padding: 2px 6px 2px 6px;
  }
  #suggestResult
  {
   position: absolute;
   background-color: #FFFFFF;
   text-align: left;
   border: 1px solid #000000;
  }
  /*input*/
  .input_on
  {
   padding: 2px 8px 0pt 3px;
   height: 18px;
   border: 1px solid #999;
   background-color: #FFFFCC;
  }
  .input_off
  {
   padding: 2px 8px 0pt 3px;
   height: 18px;
   border: 1px solid #CCC;
   background-color: #FFF;
  }
  .input_move
  {
   padding: 2px 8px 0pt 3px;
   height: 18px;
   border: 1px solid #999;
   background-color: #FFFFCC;
  }
  .input_out
  {
   /*height:16px;默认高度*/
   padding: 2px 8px 0pt 3px;
   height: 18px;
   border: 1px solid #CCC;
   background-color: #FFF;
  }
 </style>
 <script language="javascript" type="text/javascript">
  var $ = document.getElementById;
  //创建XMLHttpRequest对象  
  function createXMLHttpRequest() {
   var obj;
   if (window.XMLHttpRequest) { //Mozilla 浏览器
    obj = new XMLHttpRequest();
   }
   else if (window.ActiveXObject) { // IE浏览器
    try {
     obj = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
     try {
      obj = new ActiveXObject("Microsoft.XMLHTTP");
     } catch (e) { }
    }
   }
   return obj;
  }
  //当输入框的内容变化时,调用该函数
  function searchSuggest() {
   var inputField = $("txtSearch");
   var suggestText = $("suggestResult");
   if (inputField.value.length > 0) {
    var o = createXMLHttpRequest();
    var url = "SearchResult.ashx?searchText=" + escape(inputField.value);
    o.open("GET", url, true);
    o.onreadystatechange = function () {
     if (o.readyState == 4) {
      if (o.status == 200) {
       var sourceItems = o.responseText.split("\n");
       if (sourceItems.length > 1) {
        suggestText.style.display = "";
        suggestText.innerHTML = "";
        for (var i = 0; i < sourceItems.length - 1; i++) {
         var sourceText = sourceItems[i].split("@")[1];
         var sourceValue = sourceItems[i].split("@")[0];
         var s = "<div onmouseover=\"javascript:suggestOver(this);\" ";
         s += " onmouseout=\"javascript:suggestOut(this);\" ";
         s += " onclick=\"javascript:setSearch('" + sourceText + "','" + sourceValue + "');\" ";
         s += " class=\"suggest_link\" >" + sourceText + "</div>";
         suggestText.innerHTML += s;
        }
       }
       else {
        suggestText.style.display = "none";
       }
      }
     }
    }; //指定响应函数
    o.send(null); // 发送请求
   }
   else {
    suggestText.style.display = "none";
   }
  }
  function delayExecute() {
   $("valueResult").value = "";
   window.setTimeout(function () { searchSuggest() }, 800);
   //延时处理
  }
  function suggestOver(div_value) {
   div_value.className = "suggest_link_over";
  }
  function suggestOut(div_value) {
   div_value.className = "suggest_link";
  }
  function setSearch(a, b) {
   $("txtSearch").value = a;
   $("valueResult").value = b;
   var div = $("suggestResult");
   div.innerHTML = "";
   div.style.display = "none";
  }
  function showResult() {
   alert($("txtSearch").value + $("valueResult").value);
  }
 </script>
</head>
<body>
 <form id="form1" action="">
 <input type="text" id="txtSearch" name="txtSearch" onkeyup="delayExecute();" size="20"
  class="input_out" onfocus="this.className='input_on';this.onmouseout=''"
  onblur="this.className='input_off';this.onmouseout=function(){this.className='input_out'};"
  onmousemove="this.className='input_move'" onmouseout="this.className='input_out'" />
 <input type="hidden" id="valueResult" name="valueResult" value="" />
 <br />
 <div id="suggestResult" style="display: none">
 </div>
 <br/>
 <input id="button1" type="button" value="提交" onclick="showResult();" />
 </form>
</body>
</html>

服务器端C#代码

<%@ WebHandler Language="C#" Class="SearchResult" %>
using System;
using System.Web;
using System.Data;
public class SearchResult : IHttpHandler {
 public void ProcessRequest (HttpContext context) {
  object QueryWord=context.Request.QueryString["searchText"];
  if (QueryWord != null)
  {
   if (QueryWord.ToString().Trim().Length > 0)
   {
    DataTable dt = getDB();
    string returnText = "";
    if (dt != null && dt.Rows.Count > 0)
    {
     DataRow[] dr = dt.Select(" name like '%" + QueryWord .ToString()+ "%' ");
     if (dr.Length > 0)
     {
      for (int i = 0; i < dr.Length; i++)
      {
       //可设置返回多字符串
       returnText += dr[i]["id"].ToString() + "@" + dr[i]["name"].ToString() + "\n";
      }
     }
    }
    context.Response.Write(returnText);
    context.Response.End();
   }
  }  
 }
 public bool IsReusable {
  get {
   return false;
  }
 }
 /// <summary>
 /// 获取数据源的方法
 /// </summary>
 /// <returns>数据源</returns>
 private DataTable getDB()
 {
  DataTable dt = new DataTable();
  dt.Columns.Add("id");
  dt.Columns.Add("name");
  dt.Columns.Add("age");
  dt.Rows.Add(new object[] { "000001", "张三", "26" });
  dt.Rows.Add(new object[] { "000002", "张晓", "26" });
  dt.Rows.Add(new object[] { "000003", "张岚", "27" });
  dt.Rows.Add(new object[] { "000004", "李四", "25" });
  dt.Rows.Add(new object[] { "000005", "李星", "27" });
  return dt;
 }
}

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jquery 图片轮换效果
Jul 29 Javascript
通过Javascript创建一个选择文件的对话框代码
Jun 16 Javascript
js 异步操作回调函数如何控制执行顺序
Dec 24 Javascript
动态加载js、css等文件跨iframe实现
Feb 24 Javascript
JS 实现列表与多选框选择附预览动画
Oct 29 Javascript
input框中的name和id的区别
Nov 16 Javascript
ng2学习笔记之bootstrap中的component使用教程
Mar 09 Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 Javascript
浅谈gulp创建完整的项目流程
Dec 20 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 Javascript
vue实现购物车列表
Jun 30 Javascript
Jquery遍历Json数据的方法
Apr 20 #Javascript
javascript判断变量是否有值的方法
Apr 20 #Javascript
javascript实现校验文件上传控件实例
Apr 20 #Javascript
使用iojs的jsdom库实现同步系统时间
Apr 20 #Javascript
javascript实现汉字转拼音代码分享
Apr 20 #Javascript
jQuery简单实现图片预加载
Apr 20 #Javascript
jquery滚动到顶部底部代码
Apr 20 #Javascript
You might like
我的论坛源代码(九)
2006/10/09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
项目管理计划书
2014/01/09 职场文书
李培根演讲稿
2014/05/22 职场文书
走进毛泽东观后感
2015/06/04 职场文书
跑吧孩子观后感
2015/06/10 职场文书
标枪加油稿
2015/07/22 职场文书
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js