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 相关文章推荐
使用prototype.js 的时候应该特别注意的几个问题.
Apr 12 Javascript
jquery查找父元素、子元素(个人经验总结)
Apr 09 Javascript
javascript 处理null及null值示例
Jun 09 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
jQuery动态生成Bootstrap表格
Nov 01 Javascript
jQuery代码实现实时获取时间
Jan 29 Javascript
深入理解ES6的迭代器与生成器
Aug 19 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
原生实现一个react-redux的代码示例
Jun 08 Javascript
Js类的构建与继承案例详解
Sep 15 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 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 URL验证正则表达式
2011/07/19 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
python实现FTP服务器服务的方法
2017/04/11 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
python3+PyQt5重新实现自定义数据拖放处理
2018/04/19 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
django实现日志按日期分割
2020/05/21 Python
python mysql中in参数化说明
2020/06/05 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
庆七一活动方案
2014/01/25 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
小学教师师德感言
2014/02/10 职场文书
银行贷款承诺书
2014/03/29 职场文书
设计专业自荐信
2014/06/19 职场文书
个人整改方案范文
2014/10/25 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
上诉状格式
2015/05/23 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang