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 相关文章推荐
一个刚完成的layout(拖动流畅,不受iframe影响)
Aug 17 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 Javascript
JavaScript 图片预览效果 推荐
Dec 22 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
Sep 22 Javascript
输入框过滤非数字的js代码
Sep 18 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
Aug 20 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
May 17 Javascript
javascript url几种编码方式详解
Jun 06 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 Javascript
利用Angular.js编写公共提示模块的方法教程
May 28 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
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和ACCESS写聊天室(九)
2006/10/09 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
PHP答题类应用接口实例
2015/02/09 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
用 Python 制作地球仪的方法
2020/04/24 Python
Python定义函数实现累计求和操作
2020/05/03 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
应用电子技术专业个人求职信
2013/09/21 职场文书
法律专业推荐信范文
2013/11/29 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
保护环境倡议书300字
2014/05/19 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
python多次执行绘制条形图
2022/04/20 Python
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技