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 相关文章推荐
各浏览器对click方法的支持差异小结
Jul 31 Javascript
非主流的textarea自增长实现js代码
Dec 20 Javascript
JavaScript 产生不重复的随机数三种实现思路
Dec 13 Javascript
用JS实现3D球状标签云示例代码
Dec 01 Javascript
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
js简单实现Select互换数据的方法
Aug 17 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
Sep 28 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 Javascript
vue中父子组件注意事项,传值及slot应用技巧
May 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
各种战术和打法的原创者
2020/03/04 星际争霸
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
javascript实现简易计算器
2017/02/01 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
Python实现基于权重的随机数2种方法
2015/04/28 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
python实现自动登录
2018/09/17 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
Lucene推荐的分页方式是什么?
2015/12/07 面试题
计算机求职信
2013/12/01 职场文书
毕业生个人的求职信范文
2013/12/03 职场文书
环境工程专业个人求职信
2013/12/05 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript