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 switch case 另类写法
Mar 14 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
Apr 07 Javascript
javascript实现获取服务器时间
May 19 Javascript
基于JavaScript实现 网页切出 网站title变化代码
Apr 03 Javascript
javascript笔记之匿名函数和闭包
Feb 06 Javascript
利用node.js本地搭建HTTP服务器
Apr 19 Javascript
Jquery获取radio选中的值
May 05 jQuery
Three.js利用Detector.js插件如何实现兼容性检测详解
Sep 26 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
Dec 28 Javascript
微信小程序实现多行文字超出部分省略号显示功能
Oct 23 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
Nov 07 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
B2K与车机的中波PK
2021/03/02 无线电
实用函数5
2007/11/08 PHP
php实现jQuery扩展函数
2009/10/30 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
python求crc32值的方法
2014/10/05 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
tensorflow常用函数API介绍
2020/04/19 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
.NET现在共支持多少种语言
2014/02/26 面试题
学生会竞选自荐信
2013/10/12 职场文书
阳光体育活动方案
2014/02/16 职场文书
询价采购方案
2014/06/09 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
小学生表扬稿范文
2015/05/05 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers