当前位置: 首页 > 图文教程 > 网络编程 > Javascript > jQuery TextBox自动完成条

Javascript
javascript radio list的实现细节(多浏览器兼容)
IE在DOM操作有表单控件时的bug
trim原型函数看js正则表达式的性能
js 禁用浏览器的后退功能的简单方法
IE和Firefox下javascript的兼容写法小结
兼容ie和firefox js关闭代码
用tip解决Ext列宽度不够的问题
firefox getyear() getFullYear数获取年份的问题
javascript iFrame研究
FLASH 广告之外的链接
firefox TBODY 用js显示和隐藏时出现错位的解决方法
Javascript 获取LI里的内容
比较全的JS checkbox全选、取消全选、删除功能代码
JS checkbox控制操作代码
document.all与getElementById、getElementsByName、getElementsByTagName用法区别-document.all
document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElementById
简单通用的JS滑动门代码
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
js 提交和设置表单的值
flash javascript之间的通讯方法小结

Javascript 中的 jQuery TextBox自动完成条


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 408 ::
收藏到网摘: n/a

刚开始学jQuery,于是想试试学习效果,所以就做了个这个TextBox自动完成条,练习练习。请牛人们别笑话。 代码如下:
复制代码 代码如下:

<%@ 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文档内容都是随机产生的:所以下面的效果显示的结果都是随机生成的;不说了。来个图例:
图例