因为所需要的数据已经保存在了一个table中,所以简化很多。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>WebForm1</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <mce:script language="javascript"><!-- var changing; var temp = ""; function changeBegin() { changing = setInterval("onChange()",100); } function onChange() { var text = document.getElementById("Text2").value; document.getElementById("tableShow").style.display = "block"; document.getElementById("tableShow").style.top = document.getElementById("textShow").offsetHeight-3+"px"; document.getElementById("tableShow").style.left = document.getElementById("textShow").offsetLeft-10+"px"; document.getElementById("tableShow").style.width = document.getElementById("textShow").offsetWidth; if(text == "" || document.getElementById("uTable").rows.length <= 0) { document.getElementById("tableShow").style.display = "none"; } if(text != "" && temp != text) { var uTable = document.getElementById("uTable"); var DataGrid1 = document.getElementById("DataGrid1"); temp = text; for(var i = 0; i < DataGrid1.rows.length; i++) { var nick2 = DataGrid1.rows[i].innerText; for(var j = 0; j < uTable.rows.length; j++) { var nick1 = uTable.rows[j].innerText; if(nick1.indexOf(text) < 0 || nick1 == nick2) { uTable.deleteRow(j); j = 0; continue; } } if(nick2.indexOf(text) < 0) { continue; } var arr = nick2.split(text); var tbl = document.getElementById("uTable"); var row = tbl.insertRow(); var cell = row.insertCell(); cell.innerHTML = ""; for(var ai = 0; ai < arr.length; ai++) { if(ai != 0 && ai+1 >= arr.length) cell.innerHTML += arr[ai]; else cell.innerHTML += arr[ai]+"<b style="COLOR: #ff0066" mce_style="COLOR: #ff0066">"+text+"</b>"; } row.onclick = function() { e=arguments[0]; e=window.event?window.event:e; var ObjTd=e.srcElement?e.srcElement:e.target; var ObjTr=ObjTd.parentNode; document.getElementById("Text2").value = ObjTr.innerText; document.getElementById("tableShow").style.display = "none"; }; row.onmouseover = function() { e=arguments[0]; e=window.event?window.event:e; var ObjTd=e.srcElement?e.srcElement:e.target; var ObjTr=ObjTd.parentNode; ObjTr.style.backgroundColor="#3399ff"; }; row.onmouseout = function() { e=arguments[0]; e=window.event?window.event:e; var ObjTd=e.srcElement?e.srcElement:e.target; var ObjTr=ObjTd.parentNode; ObjTr.style.backgroundColor="#ffffff"; }; } } } function changeEnd() { clearInterval(changing); } // --></mce:script> </HEAD> <body> <form id="Form1" method="post" runat="server"> <FONT face="宋体"> <div id="textShow" style="Z-INDEX:100;POSITION:absolute" mce_style="Z-INDEX:100;POSITION:absolute"><INPUT id="Text2" onblur="javascript:changeEnd()" onfocus="javascript:changeBegin()" type="text"><INPUT type="button" value="Button"> <div id="tableShow" style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; DISPLAY: none; Z-INDEX: 1000; BORDER-LEFT: black 1px solid; WIDTH: 100px; BORDER-BOTTOM: black 1px solid; POSITION: absolute; HEIGHT: 0px"> <TABLE id="uTable" cellSpacing="1" cellPadding="1" width="100%" border="0"> </TABLE> </div> </div> </FONT> <TABLE id="DataGrid1" style="DISPLAY:none" mce_style="DISPLAY:none" cellSpacing="1" cellPadding="1" width="300" border="1"> <TR> <TD>13428947548</TD> </TR> <TR> <TD>13456852348</TD> </TR> <TR> <TD>15485856845</TD> </TR> </TABLE> </form> </body> </HTML> 33 个 JavaScript 自动完成(Autocomplete)脚本 http://www.cftea.com/c/2009/10/5PH6PB1JUN58ZPS2.asp