Jquery 仿百度搜索引擎自动完成功能

源代码如下所示:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>自动完成例子</title>

<script type="text/javascript" src="js/jquery-1.4.1.min.js"></script>

<style>

#search label {

display: block;

}

#search-text {

width: 150px;

}

.placeholder {

color: #999;

}

/*#sidebar .autocomplete {*/

.autocomplete {

margin:0px;

position: absolute;

background: #fff;

border: 1px solid #888;

width:110px;

list-style-type: none;

z-index: 52;

}

/*#sidebar .autocomplete li {*/

.autocomplete li {

padding:2px;

margin:0;

margin-left:-40px;

}

/*#sidebar .autocomplete li.selected {*/

.autocomplete li.selected {

background: #008;

color: #fff;

}

</style>

</head>

<script type="text/javascript">

//实现自动完成功能 像百度一样的功能

$(document).ready(function(e) {

//Bug:汉字不能查询的问题和空值的时候要出现值

var jsonData=["张三","李四","1科比","罗晋","张娜","张芳","123","allen lverson","bob dylan","bob1","bob2","1nba"];

var selectedItem = null; //定义全局变量

var old_searchtext = null;

var $autoComplete = $(‘<ul class="autocomplete"></ul>‘).hide().insertAfter(‘#search_text‘);

//定义函数获取鼠标显示颜色

var setSelectedItem = function (item, eventKeyCode) {

selectedItem = item;

if (selectedItem == null || $(‘ul[class="autocomplete"]‘).find("li").length <= 0) {

//没有选择值则移除ul

$(‘ul[class="autocomplete"]‘).empty().hide();

return false;

}

if (selectedItem < 0) { //向上移出界

$autoComplete.find("li").removeClass("selected");

$("#search_text").val($("#Result_text").val());

selectedItem = null;

return false;

}

if (selectedItem >= $autoComplete.find("li").length) {  //向下移出界

$autoComplete.find("li").removeClass("selected");

$("#search_text").val($("#Result_text").val());

selectedItem = null;

return false;

}

//移动上下键获取文本值

$("#search_text").val($autoComplete.find("li").removeClass("selected").eq(selectedItem).addClass("selected").text());

$autoComplete.show();

};

//按回车键获取值,但不能获取==>这里改为直接提交

var populateSearchField = function () {

$("#search_text").val($autoComplete.find("li").eq(selectedItem).text());

//移除ul

$(‘ul[class="autocomplete"]‘).empty().hide();

};

var searchLabel = $("#search_title").remove().text();

$("#form1").submit(function () {

if ($("#search_text").val() == searchLabel) {

$("#search_text").val(‘‘);

}

});

$("#search_text").addClass("placeholder")

.val(searchLabel)

.focus(function () {

if (this.value == searchLabel) {

$(this).removeClass("placeholder").val(‘‘);

}

})

.blur(function () {

if (this.value == "") {

$(this).addClass("placeholder").val(searchLabel);

}

})

.attr("autocomplete", "off")                  //关闭search_text文本框(即浏览器)自带的自动完成功能

.keydown(function () {

old_searchtext = $(this).val();           //按下时获取文本值

})

.keyup(function (event) {

var InComeDescription = $(this).val();    //按键释放时触发

//没有值直接返回,提高性能

if (InComeDescription == null || InComeDescription.length <= 0) {

return false;

}

//代码为40及以下的为特殊键(回车、方向、退出键等),为8backspace键,32空格键,13 回车

if (event.keyCode > 40 || event.keyCode == 8 || event.keyCode == 32) {

selectedItem = null; //每次输入新的数据时清空,以使下拉列表显示正常

//有数据(可加个判断InComeDescritption不为空才取值)

$searchtextvalue=$(‘#Result_text‘).val(InComeDescription);

if (jsonData.length) {

//var objData = jQuery.parseJSON(jsonData);

var objData=jsonData;

//先把以前的记录清空,不然下拉列表会重复

$(‘ul[class="autocomplete"]‘).empty();

$.each(objData, function (index, term) {

if(term.indexOf(InComeDescription)>-1){

$(‘<li></li>‘).text(term)

.appendTo($autoComplete)

.mouseover(function () {

setSelectedItem(index, null);

})

.click(function () {//实现选择值到文本框

$("#search_text").val(term);

$(‘ul[class="autocomplete"]‘).hide();

});

}

});

$autoComplete.show();//按百度默认不选择第一行

// setSelectedItem(0);//默认选中第一行,不然这时不显示

} else {

//没有数据就不显示

setSelectedItem(null, null);

}

} else if (event.keyCode == 38) {

//用户按了上方向键

if (selectedItem == null) { return false; } //不选

setSelectedItem(selectedItem - 1, 38);

} else if (event.keyCode == 40) {

//用户按了向下方向键

if (selectedItem == null) { selectedItem = -1; } //选择第一行

setSelectedItem(selectedItem + 1, 40);

}

})

.keypress(function (event) {

if (event.keyCode == 13 && selectedItem != null) {

populateSearchField();

event.preventDefault();

}

})

//失去焦点关闭下拉列表,因为blur先于click事件调用,所以这时在延迟以使当click事件执行时能执行

.blur(function (event) {

setTimeout(function () {

setSelectedItem(null)

}, 250);

});

});

</script>

<body>

Jquery仿百度自动搜索:提供搜索的数据(张三 李四 科比 张娜 张芳 123 allenlverson bobdylan bob1 bob2 1nba)

<br/>

<label id="search_title">Search the website</label>

<input type="text" ID="search_text" runat="server"></input>

<input type="hidden" id="Result_text" />

</body>

</html>

实现的功能如截图所示:

仿百度搜索引擎自动完成功能实现代码,实现同百度搜索一样的自动完成功能,希望能够帮助新学习Jquery的朋友,有需要的朋友可以下载,高手请多指点,下载地址:http://download.csdn.net/detail/javaquentin/8286573





时间: 2024-10-12 21:27:16

Jquery 仿百度搜索引擎自动完成功能的相关文章

JS实现仿百度输入框自动匹配功能的示例代码

JS实现仿百度输入框自动匹配功能的示例代码 作者: 字体:[增加 减小] 类型:转载 本篇文章主要是对JS实现仿百度输入框自动匹配功能的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 现在很多网站都有这种效果,在文本框输入一个字符,下边会出来相匹配的内容,这个代码就演示了这个功能是如何完成的,当然,这是个静态的,你可以将提示的内容从数据库读取出来,要用到AJAX那东东. 复制代码 代码如下: <HTML><HEAD><title>带输入匹配的文本框&l

基于jQuery仿百度首页换肤功能代码

分享一款基于jQuery仿百度首页换肤功能代码.这是一款类似百度首页的自定义背景图片切换特效代码. 在线预览   源码下载 实现的代码. html代码: <a href="#">换肤</a> <div class="heitiao"></div> <div class="con"><img src="images/content.png" /></d

JQUERY仿百度谷歌智能提示

  若使用jquery智能提示,则主要使用Ajax动态调用后台. 仿百度谷歌智能提示,说实话,本篇博客仿的不太缜密,有待继续完善. 仿百度谷歌智能提示,思路主要如下: 1.后台根据前台传递的参数进行匹配,提供数据列表. 2.前台美观智能展示选择数据列表 声明:此篇博客的后台是假数据,没有搭建数据库进行匹配. 来一张目前功能截图: 鼠标控制: 键盘控制: 选中之后: 思路:[重点前台] 监听输入框值变化,然后动态生成显示列表[仿] 显示列表中绑定各种事件(鼠标移近.移除.单击[仿] 文本框聚焦

html+css+jQuery+JavaScript实现tab自动切换功能

tab1.html内容 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>tab选项卡</title> <style> * { margin: 0; padding: 0; } ul,li { list-style: none; } body { background-color: #323232; font-size: 12px;

高仿百度搜索引擎

这是百度搜索 HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="css/baiduFirst.css"> </head> <body>

jquery 仿百度搜索下拉框的插件

转载地址:http://www.open-open.com/lib/view/open1420624048437.html 今天写了个下拉插件分享出来 效果: , 可以搜素,也可以使用上下键选择匹配出来的值 css 1 .select4_box { 2 border: 1px solid #5897fb; 3 position: absolute; 4 width: 250px; 5 background: #fff; 6 border-radius: 4px; 7 -webkit-box-sh

jQuery 仿百度输入标签插件

之前在做cms系统的时候,由于缺少tag的设计,准备自己搞一个,百般搜索,居然给我发现了一个无论在视觉和操作上都是非常爽的 原作者的地址:http://www.soso.io/article/17109.html 但是,下载回来有一些bug,下面的这个是我修复好的,直接拿来就用: 效果图: 源文件:顺便附上当时查找控件时找的一些资料 点击下载

仿百度的输入提示功能

/// <reference path="jquery-1.7.1.min.js" /> //实现搜索输入框的输入提示js类 function oSearchSuggest(searchFuc) { var input = $('#txtNaviSearchBox'); var suggestWrap = $('#gov_search_suggest'); var key = ""; var init = function () { input.bind

js仿百度地图拖拽、缩放、添加图层功能(原创)

最近项目中完成的需求,仿百度地图中的功能: 要求:1.底层图可以拖拽.缩放.     2.拖拽一个图标,在底层图上对应位置添加一个标注点,该标注点位置要随底层图移动. 3.添加的标注点,可以拖动,删除. 主要知识点和难点就是各个浏览器的点击.拖拽.缩放事件兼容性,对js运动属性.运动偏移位置的了解,以及js面向对象的应用. 这里跟大家分享一下完成后的代码. html代码主要知识点就是运动元素和底层元素的相对绝对定位,css代码不再贴出: <div id="warp" style=