jQuery TextBox自动完成条


Posted in Javascript onJuly 22, 2009

代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %> <!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>无标题页</title> 
<style type="text/css"><!-- 
.mouseEnter 
{ 
background-color: Yellow; 
} 
--></style><style type="text/css" bogus="1"> .mouseEnter 
{ 
background-color: Yellow; 
} 
</style> 
<script type="text/javascript" src="SCRIPT/jquery-1.3.2-vsdoc2.js" src="SCRIPT/jquery-1.3.2-vsdoc2.js"></script> 
<script type="text/javascript"><!-- 
$(function(){ 
$("#result").css("position","absolute"); 
var offset =$("#TextBox1").offset(); 
$("#result").css({left: offset.left +"px",top: offset.top + $("#TextBox1").height() + "px"}); 
}); 
// --></script> 
</head> 
<body > 
<form id="form1" runat="server" onsubmit="alert($('#TextBox1').val());"> 
<center><asp:TextBox ID="TextBox1" runat="server" width="137px" ></asp:TextBox></center> 
<div id="result" style="width: 147px;"> 
<table style="width: 100%; border-style: none solid solid solid; border-width: 1px; 
border-color: #00FF00"> 
<tbody id="mytable"> 
</tbody> 
</table> 
 </div> 
</form> 
<script type="text/javascript"><!-- 
var size = 0; //每次真实取到的数据条目数(最大10) 
var index = -1 ;//计算keydown事件:td索引; 
function setTdEvent(){//为生成的TD设置事件 
//点击效果 
$("#mytable>tr>td").click(function(){ 
$("#TextBox1").val($(this).text()); 
}); 
//选择高亮效果 
$("#mytable>tr >td").hover(function(){ 
$(this).addClass("mouseEnter"); 
},function(){ 
$(this).removeClass("mouseEnter"); 
}); 
} 

function setTD(text){ 
//$("tr:even").css("backgroundColor","blue"); 
return "<tr><td style='border: 0px none #FFFFFF;width:100%'>" + text + "</td></tr>"; 
} 
function setTable(msg) 
{ 
var tbody = $("#mytable"); 
var texts = msg.split(";"); 
var str =""; 
size = texts.length; 
for(var i=0;i<texts.length;i++) 
{ 
str += setTD(texts[i]); 
} 
tbody.html(str); 
setTdEvent() 
$("#div1").show("fast"); 
} 
function setKeyDown(str) 
{ 
$("#mytable>tr>td:eq(" + index + ")").removeClass("mouseEnter"); 
if(str == "+") 
{ 
index = (++index) % size; 
} 
else if("-") 
{ 
index =(--index + size) % size; 
} 
try{ 
$("#mytable>tr>td:eq(" + index + ")").addClass("mouseEnter"); 
}catch(e){ 
alert(e); 
} 
} 
$(function(){ 
$("#TextBox1").bind("propertychange",function(){ 
$("#div1").hide("fast").html(""); 
index = -1; 
$.ajax({ 
type: "POST", 
url: "Suggest.ashx", 
data: "word="+$("#TextBox1").val()+"&time="+new Date().toLocaleTimeString(), 
success: function(msg){ 
setTable( msg ); 
} 
}); 
}); 
$("#TextBox1").bind("keydown",function(event){ 
if( event.keyCode == 38 ) 
{ 
setKeyDown("-"); 
} 
else if(event.keyCode == 40) 
{ 
setKeyDown("+"); 
} 
else if(event.keyCode == 13 && index != -1) 
{ 
$("#TextBox1").val( $("#mytable>tr>td:eq(" + index + ")").text()); 
} 
}); 
}); 
// --></script> 
</body> 
</html>

Ajax调用的一般处理程序为:
<%@ WebHandler Language="C#" Class="Suggest" %> using System; 
using System.Web; 
using System.Linq; 
using System.Xml; 
using System.Xml.Linq; 
public class Suggest : IHttpHandler 
{ 
public void ProcessRequest(HttpContext context) 
{ 
HttpResponse Response = context.Response; 
Response.Charset = "gb2312"; 
Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.ContentType = "text/plain"; 
Response.StatusCode = 200; 
string start = context.Request.Params["word"].ToString(); 
Response.Write(GetSuggest(start)); 
Response.Flush(); 
} 
public bool IsReusable 
{ 
get 
{ 
return false; 
} 
} 
/// <summary> 
/// 获取响应字符串 
/// </summary> 
/// <param name="start">查询起始字符串</param> 
/// <returns>响应字符串</returns> 
private string GetSuggest(string start) 
{ 
XElement root = XElement.Load(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Suggest.xml"); 
System.Collections.Generic.IEnumerable<string> 
q = (from r in root.Elements() 
where (r.Name).ToString().ToLower().StartsWith(start.ToLower()) 
select r.Name.ToString()).Take(5); 
System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
foreach (string w in q) 
{ 
sb.Append(w + ";"); 
} 
if (sb.Length != 0) 
sb.Remove(sb.Length - 1, 1); 
return sb.ToString(); 
} 
}

其中xml文档其实也不是什么标准的xml文档,就是拿来存储数据,练习练习刚学的Linq to XML。由于不想建表,本人也许有点懒惰吧,xml文档内容都是随机产生的:所以下面的效果显示的结果都是随机生成的;不说了。来个图例:
jQuery TextBox自动完成条
Javascript 相关文章推荐
用javascript获取地址栏参数
Dec 22 Javascript
JS学习之一个简易的日历控件
Mar 24 Javascript
js的逻辑运算符 ||
May 31 Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 Javascript
jquery图片滚动放大代码分享(2)
Aug 28 Javascript
详解RequireJS按需加载样式文件
Apr 12 Javascript
手把手教你使用vue-cli脚手架(图文解析)
Nov 08 Javascript
Vue.js实现图片的随意拖动方法
Mar 08 Javascript
vue实现点击当前标签高亮效果【推荐】
Jun 22 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
微信小程序实现下拉框功能
Jul 16 Javascript
解决vue组件中click事件失效的问题
Nov 09 Javascript
JavaScript 动态生成方法的例子
Jul 22 #Javascript
模仿jQuery each函数的链式调用
Jul 22 #Javascript
js 代码集(学习js的朋友可以看下)
Jul 22 #Javascript
javascript Base类 包含基本的方法
Jul 22 #Javascript
javascript 表单规则集合对象
Jul 21 #Javascript
一个可以随意添加多个序列的tag函数
Jul 21 #Javascript
一个cssQuery对象 javascript脚本实现代码
Jul 21 #Javascript
You might like
优化PHP代码的53条建议
2008/03/27 PHP
php的urlencode()URL编码函数浅析
2011/08/09 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
常见的python正则用法实例讲解
2016/06/21 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
python实现猜数游戏
2020/03/27 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
python 线程的五个状态
2020/09/22 Python
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
大学生毕业自我鉴定范文
2013/11/03 职场文书
财务出纳员岗位职责
2013/11/26 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技