欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jQuery ajax仿Google自动提示SearchSuggess功能示例

程序员文章站 2023-11-12 18:14:46
本文实例讲述了jquery ajax仿google自动提示searchsuggess功能。分享给大家供大家参考,具体如下: 页面: <%@ page...

本文实例讲述了jquery ajax仿google自动提示searchsuggess功能。分享给大家供大家参考,具体如下:

jQuery ajax仿Google自动提示SearchSuggess功能示例jQuery ajax仿Google自动提示SearchSuggess功能示例

页面:

<%@ page language="c#" autoeventwireup="true" codefile="default.aspx.cs" inherits="_default" %>
<!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 runat="server">
<title>seach</title>
<script type="text/javascript" src="jquery.min.js" ></script>
<script type="text/javascript" src="js.js"></script>
<link href="css.css" rel="external nofollow" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div onclick="keyup_close();">
<ul>
<li class="h_14">
<iframe style="display: none" id="if_keyup" name="if_keyup"></iframe>
<input id="kw" name="kw" class="h_15" onkeyup="keyup(event)" autocomplete="off" />
<div style="display: none" id="keyup_d" class="sokeyup" ></div>
</li>
<li class="h_16">
<input style="cursor: pointer" onclick="so_search();" src="searchbuttom.gif" type="image" />
</li>
</ul>
</div>
</form>
</body>
</html>

css部分:

ul { padding: 0px; list-style-type: none; margin: 0px; list-style-image: none; height: 52px; }
li { padding-bottom: 0px; list-style-type: none; margin: 0px; padding-left: 0px; padding-right: 0px; list-style-image: none; padding-top: 0px}
.h_14 { background-image: url(text_search.jpg); text-align: left; padding-bottom: 1px; line-height: 26px; margin-top: 3px; padding-left: 4px; width: 245px; background-repeat: no-repeat; background-position: center 50%; float: left; height: 26px; margin-left: 3px; vertical-align: middle; overflow: hidden; margin-right: 3px; padding-top: 2px}
.h_15 { border-bottom: 0px; border-left: 0px; padding-bottom: 0px; line-height: 20px; padding-left: 0px; width: 240px; padding-right: 0px; display: block; float: left; height: 20px; margin-left: 0px; font-size: 14px; vertical-align: middle; border-top: 0px; border-right: 0px; padding-top: 4px}
.h_16 { width: 57px; float: left; height: 32px; overflow: hidden; cursor: pointer}
.sokeyup { z-index: 10000; border-bottom: #000000 1px solid; position: absolute; border-left: #000000 1px solid; width: 245px; display: none; clear: both; overflow: hidden; border-top: #000000 1px solid; border-right: #000000 1px solid}
.sokeyup_1 { line-height: 20px; padding-left: 4px; width: 237px; padding-right: 4px; height: 20px; clear: both; overflow: hidden}
.sokeyup_2 { line-height: 20px; width: 140px; float: left; height: 20px; color: #4c4c4c}
.sokeyup_3 { text-align: right; line-height: 20px; width: 97px; float: right; height: 20px; color: #008000}
.sokeyup_4 { line-height: 20px; width: 237px; height: 20px
}
.sokeyup_5 { line-height: 20px; float: right; height: 20px; color: #0000cc; cursor: pointer; text-decoration: underline}

js部分:

function so_search(){
var kw = $("#kw").val();
var kid = 0;
var kname=$("#select_kid").html();
kw = encodeuri(kw);
if(kw == ''){
alert("请输入要查找的关键词");
}else{
location.href="search-" rel="external nofollow" rel="external nofollow" +kw+".html";
}
}
//关闭搜索提示
function keyup_close(){
$("#keyup_d").hide();
}
//
function keyup_over(id){
$("#u_"+id).css("background-color","#0000cc");
$("#l_"+id).css("color","#fff");
}
function keyup_out(id){
$("#u_"+id).css("background-color","#fff");
$("#l_"+id).css("color","#000");
}
function keyup_click(id){
$("#keyup_d").hide();
var kw=$("#l_"+id).html();
kw = encodeuri(kw);
location.href="search-" rel="external nofollow" rel="external nofollow" +kw+".html";
}
function keyup(event){
if(window.event){
var key =window.event.keycode;
}else{
var key =event.which;
}
if(key!=38&&key!=40&&key!=13){
var kw=$("#kw").val();
//跨域获取搜索提示
var url ="jsonhandler.ashx?kw=" + encodeuri(kw) + "&time=" + new date().tostring();//中文
$.get(url,function(data){
if (data!='') {
$("#keyup_d").html(data+'<ul class="sokeyup_4"><li id="l_0" style="display:none;"></li><li class="sokeyup_5" onclick="keyup_close()">关闭</li></ul>');
$("#keyup_d").show();
} else {
$("#keyup_d").hide();
}
}
);
}
}
var ul_id=0;
$(window).keydown(function(event){
if(window.event){
var key =window.event.keycode;
}else{
var key =event.which;
}
if (key==13) {
if (searchfocus == true) {
}
}
var ulcount=$("#keyup_d ul").size()-1;
if($("#keyup_d").css("display")=="block"){
//向上
$("#l_0").html($("#kw").val());
if(key==13) {
if ($("#kw").val()!= "") {
so_search();
}
}
if (key==38) {
ul_id--;
if(ul_id<0){
ul_id = ulcount;
keyup_over(ul_id);
}else{
keyup_out(ul_id+1);
keyup_over(ul_id);
}
$("#kw").val($("#l_"+ul_id).html());
return false;
}
//向下
if (key==40 ) {
$("#l_0").html($("#kw").val());
ul_id++;
if(ul_id>ulcount){
ul_id=0;
keyup_out(ulcount);
}else{
keyup_out(ul_id-1);
keyup_over(ul_id);
}
$("#kw").val($("#l_"+ul_id).html());
return false;
}
}
});

ashx部分:

<%@ webhandler language="c#" class="jsonhandler" %>
using system;
using system.web;
using system.data.sqlclient;
using system.data;
public class jsonhandler : ihttphandler {
public void processrequest(httpcontext context)
{
context.response.contenttype = "text/plain";
string key = context.request["kw"];
if (key !=null&&key!="")
{
sqlconnection con = new sqlconnection("server=juqi;database=northwind;uid=sa;pwd=sa;");
con.open();
string str = "select distinct keyword,num from search where keyword like @kw order by keyword";
sqlcommand com = new sqlcommand(str, con);
com.parameters.add("@kw", sqldbtype.nvarchar).value = "%"+ key + "%";
sqldatareader sdr = com.executereader();
string htmlstr = "";
int i = 1;
while (sdr.read())
{
string kword = sdr["keyword"].tostring();
string a = sdr["num"].tostring();
htmlstr += "<ul class='sokeyup_1' onmouseover='keyup_over(" + i + ")' onmouseout='keyup_out(" + i + ")' onclick='keyup_click(" + i + ")' id='u_" + i + "'>";
htmlstr += "<li class='sokeyup_2' id='l_" + i + "'>" + kword + "</li>";
htmlstr += "<li class='sokeyup_3'>" + a + " 结果</li></ul>";
i++;
}
context.response.write(htmlstr);
context.response.end();
sdr.close();
con.close();
}
}
public bool isreusable {
get {
return false;
}
}
}

sql部分:

alter procedure [dbo].[suggest_search]
@kw varchar(100) ,@cityid int
as
begin
select top 10 * from  dbo.searchindex where cityid=@cityid and keyword like '' + @kw + '%'
union all
select top 10 * from  dbo.searchindex where cityid= @cityid and pinyin like '' + @kw + '%'
order by searchtimes desc
end

--一定要建组合索引……

var result = list.orderbydescending(t => t.searchtimes).select(t => t.keyword.replace("'", "")).take(10);
string json = jsonconvert.serializeobject(result, formatting.indented);
string renderjson = "kissy.suggest.callback({'result':" + json.replace("\"", "\'") + "})";

更多关于jquery相关内容感兴趣的读者可查看本站专题:《jquery中ajax用法总结》、《jquery扩展技巧总结》、《jquery常用插件及用法总结》、《jquery常见经典特效汇总》及《jquery选择器用法总结

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