html5里百度搜索框怎么做,基于jquery的仿百度搜索框效果代码

这篇博客详细介绍了如何使用JavaScript实现一个自动搜索文本插件,包括输入框的焦点事件处理、键盘按键监听、数据加载与匹配、下拉菜单的显示与隐藏等功能。示例代码展示了从输入关键字到动态加载匹配数据的全过程,并提供了后台接口的数据返回示例。
摘要由CSDN通过智能技术生成

先看看整个的效果图:

图一:

5661c8c263d37f4a73e7796cc0fd8558.gif

图二:

5f13f47aa8c58392ac99d073224988e3.gif

图三:

eeaba3d2300c7fe27db60a98baf7fd26.gif

图四:

ca4f8526ea53e4e99223906d84aa2ed3.gif

大概的效果图就这样,接下来直接看源码

页面:

$(document).ready(function() {

$('#autoSearchText').autoSearchText({ width: 300, itemHeight: 150,minChar:1, datafn: getData, fn: alertMsg });

});

function alertMsg(vl){

alert('你将要搜索的关键字是: '+vl);

}

/*加载数据*/

function getData(val) {

var arrData = new Array();

if (val != "") {

$.ajax({

type: "post",

async: false, //控制同步

url: "getData.ashx",

data: "param=" + val,

dataType: "json",

cache: false,

success: function(data) {

for (var i = 0; i < data.length; i++) {

if (val == data[i].Code.substring(0, val.length))

arrData.push(data[i].Code);

}

},

Error: function(err) {

alert(err);

}

});

}

return arrData;

}

CSS:

.autoSearchText{

border:solid 1px #CFCFCF;

height:20px;

color:Gray;

}

.menu_v{

margin:0;

padding:0;

line-height:20px;

font-size:12px;

list-style-type:none;

}

.menu_v li{

margin:0;

padding:0;

line-height:20px;

font-size:14px;

list-style-type:none;

float:none;

}

.menu_v li span{

color:Red;

}

#autoSearchItem{

border:solid 1px #CFCFCF;

visibility:hidden;

position:absolute;

background-color:white;

overflow-y:auto;

}

JS:

1 ///

2

3 (function($) {

4 var itemIndex = 0;

5

6 $.fn.autoSearchText = function(options) {

7 //以下为该插件的属性及其默认值

8 var deafult = {

9 width: 200, //文本框宽

itemHeight: 150, // 下拉框高

minChar: 1, //最小字符数(从第几个开始搜索)

datafn: null, //加载数据函数

fn: null //选择项后触发的回调函数

};

var textDefault = $(this).val();

var ops = $.extend(deafult, options);

$(this).width(ops.width);

var autoSearchItem = '

$(this).after(autoSearchItem);

$('#autoSearchItem').width(ops.width + 2); //设置项宽

$('#autoSearchItem').height(ops.itemHeight); //设置项高

$(this).focus(function() {

if ($(this).val() == textDefault) {

$(this).val('');

$(this).css('color', 'black');

}

});

var itemCount = $('li').length; //项个数

/*鼠标按下键时,显示下拉框,并且划过项时改变背景色及赋值给输入框*/

$(this).bind('keyup', function(e) {

if ($(this).val().length >= ops.minChar) {

var position = $(this).position();

$('#autoSearchItem').css({ 'visibility': 'visible', 'left': position.left, 'top': position.top + 24 });

var data = ops.datafn($(this).val());

initItem($(this), data);

var itemCount = $('li').length;

switch (e.keyCode) {

case 38: //上

if (itemIndex > 1) {

itemIndex--;

}

$('li:nth-child(' + itemIndex + ')').css({ 'background': 'blue', 'color': 'white' });

$(this).val($('li:nth-child(' + itemIndex + ')').find('font').text());

break;

case 40: //下

if (itemIndex < itemCount) {

itemIndex++;

}

$('li:nth-child(' + itemIndex + ')').css({ 'background': 'blue', 'color': 'white' });

$(this).val($('li:nth-child(' + itemIndex + ')').find('font').text());

break;

case 13: //Enter

if (itemIndex > 0 && itemIndex <= itemCount) {

$(this).val($('li:nth-child(' + itemIndex + ')').find('font').text());

$('#autoSearchItem').css('visibility', 'hidden');

ops.fn($(this).val());

}

break;

default:

break;

}

}

});

/*点击空白处隐藏下拉框*/

$(document).click(function() {

$('#autoSearchItem').css('visibility', 'hidden');

});

};

/*获取文本框的值*/

$.fn.getValue = function() {

return $(this).val();

};

/*初始化下拉框数据,鼠标移过每项时,改变背景色并且将项的值赋值给输入框*/

function initItem(obj, data) {

var str = "";

if (data.length == 0) {

$('#autoSearchItem ul').html('

无符合数据
');

}

else {

for (var i = 1; i <= data.length; i++) {

str += "

" + i + "/" + data.length + "\r " + data[i - 1] + "";

}

$('#autoSearchItem ul').html(str);

}

/*点击项时将值赋值给搜索文本框*/

$('li').each(function() {

$(this).bind('click', function() {

obj.val($(this).find('font').text());

$('#autoSearchItem').css('visibility', 'hidden');

});

});

/*鼠标划过每项时改变背景色*/

$('li').each(function() {

$(this).hover(

function() {

$('li:nth-child(' + itemIndex + ')').css({ 'background': 'white', 'color': 'black' });

itemIndex = $('li').index($(this)[0]) + 1;

$(this).css({ 'background': 'blue', 'color': 'white' });

obj.val($('li:nth-child(' + itemIndex + ')').find('font').text());

},

function() {

$(this).css({ 'background': 'white', 'color': 'black' });

}

);

});

};

})(jQuery);

getdata.ashx

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

namespace table

{

///

/// $codebehindclassname$ 的摘要说明

///

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class getData : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

context.Response.Clear();

string value = GetResult();

context.Response.Write(value);

context.Response.End();

}

private string GetResult()

{

string result = string.Empty;

result = @"

[{""id"":""1"",""Code"":""1374123""},

{""id"":""2"",""Code"":""1374133""},

{""id"":""3"",""Code"":""1374143""},

{""id"":""4"",""Code"":""1374153""},

{""id"":""5"",""Code"":""1374163""},

{""id"":""6"",""Code"":""1374173""},

{""id"":""7"",""Code"":""1374183""},

{""id"":""8"",""Code"":""1374193""},

{""id"":""9"",""Code"":""1374213""},

{""id"":""10"",""Code"":""1374223""},

{""id"":""11"",""Code"":""1374233""},

{""id"":""12"",""Code"":""1374243""},

{""id"":""13"",""Code"":""1374253""},

{""id"":""14"",""Code"":""1374263""},

{""id"":""15"",""Code"":""1374273""},

{""id"":""16"",""Code"":""1374283""},

{""id"":""17"",""Code"":""1374293""},

{""id"":""18"",""Code"":""1374313""},

{""id"":""19"",""Code"":""1374323""},

{""id"":""20"",""Code"":""1374333""},

{""id"":""21"",""Code"":""1374343""},

{""id"":""22"",""Code"":""1374353""},

{""id"":""23"",""Code"":""1374363""},

{""id"":""24"",""Code"":""1374373""},

{""id"":""25"",""Code"":""1374383""},

{""id"":""26"",""Code"":""1374393""},

{""id"":""27"",""Code"":""1374403""},

{""id"":""28"",""Code"":""1374413""},

{""id"":""29"",""Code"":""1374423""},

{""id"":""30"",""Code"":""1374433""},

{""id"":""31"",""Code"":""1374443""},

{""id"":""32"",""Code"":""1374453""},

{""id"":""33"",""Code"":""1374463""},

{""id"":""34"",""Code"":""1374473""},

{""id"":""35"",""Code"":""1374483""},

{""id"":""36"",""Code"":""1374493""}]";

return result;

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

Demo下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用jQuery的ajax方法实现搜索商品功能,可以按照以下步骤进行: 1. 创建一个搜索框,用于输入搜索关键字。 2. 监听搜索框的键盘输入事件,当用户输入时,发送Ajax请求。 3. 在Ajax请求中,将搜索关键字作为参数发送到后端服务器。 4. 后端服务器根据搜索关键字,从数据库中查询相应的商品信息,并将结果返回给前端。 5. 前端接收到后端返回的结果,将结果展示在页面上。 下面是一个简单的示例代码,假设搜索框的id为"search-box",搜索按钮的id为"search-btn",搜索结果展示区域的id为"result-container": ```javascript // 监听搜索按钮的点击事件 $('#search-btn').click(function() { // 获取搜索关键字 var keyword = $('#search-box').val(); // 发送Ajax请求 $.ajax({ url: '/search', type: 'GET', data: {keyword: keyword}, success: function(result) { // 处理搜索结果 $('#result-container').html(result); } }); }); ``` 在后端服务器中,可以根据具体的编程语言和框架来处理Ajax请求,以下是一个简单的Python Flask框架的示例代码: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/search') def search(): # 获取搜索关键字 keyword = request.args.get('keyword') # 查询商品信息 results = db.query("SELECT * FROM products WHERE name LIKE '%{}%'".format(keyword)) # 返回搜索结果 return jsonify(results) if __name__ == '__main__': app.run() ``` 以上仅为示例代码,实际应用中需要根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值