本文实例讲述了JS实现仿google、百度搜索框输入信息智能提示的实现方法。分享给大家供大家参考。具体如下:
<!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>
<title>仿google、百度搜索框输入信息智能提示的实现</title>
<style type=\"text/css\" media=\"screen\">
body
{
font: 11px arial;
}
.suggest_link
{
width:120px;
background-color: #FFFFFF;
padding: 2px 6px 2px 6px;
}
.suggest_link_over
{
width:120px;
background-color: #E8F2FE;
padding: 2px 6px 2px 6px;
}
#suggestResult
{
position: absolute;
background-color: #FFFFFF;
text-align: left;
border: 1px solid #000000;
}
/*input*/
.input_on
{
padding: 2px 8px 0pt 3px;
height: 18px;
border: 1px solid #999;
background-color: #FFFFCC;
}
.input_off
{
padding: 2px 8px 0pt 3px;
height: 18px;
border: 1px solid #CCC;
background-color: #FFF;
}
.input_move
{
padding: 2px 8px 0pt 3px;
height: 18px;
border: 1px solid #999;
background-color: #FFFFCC;
}
.input_out
{
/*height:16px;默认高度*/
padding: 2px 8px 0pt 3px;
height: 18px;
border: 1px solid #CCC;
background-color: #FFF;
}
</style>
<script language=\"javascript\" type=\"text/javascript\">
var $ = document.getElementById;
//创建XMLHttpRequest对象
function createXMLHttpRequest() {
var obj;
if (window.XMLHttpRequest) { //Mozilla 浏览器
obj = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE浏览器
try {
obj = new ActiveXObject(\"Msxml2.XMLHTTP\");
} catch (e) {
try {
obj = new ActiveXObject(\"Microsoft.XMLHTTP\");
} catch (e) { }
}
}
return obj;
}
//当输入框的内容变化时,调用该函数
function searchSuggest() {
var inputField = $(\"txtSearch\");
var suggestText = $(\"suggestResult\");
if (inputField.value.length > 0) {
var o = createXMLHttpRequest();
var url = \"SearchResult.ashx?searchText=\" + escape(inputField.value);
o.open(\"GET\", url, true);
o.onreadystatechange = function () {
if (o.readyState == 4) {
if (o.status == 200) {
var sourceItems = o.responseText.split(\"\\n\");
if (sourceItems.length > 1) {
suggestText.style.display = \"\";
suggestText.innerHTML = \"\";
for (var i = 0; i < sourceItems.length - 1; i++) {
var sourceText = sourceItems[i].split(\"@\")[1];
var sourceValue = sourceItems[i].split(\"@\")[0];
var s = \"<div onmouseover=\\\"javascript:suggestOver(this);\\\" \";
s += \" onmouseout=\\\"javascript:suggestOut(this);\\\" \";
s += \" onclick=\\\"javascript:setSearch(\'\" + sourceText + \"\',\'\" + sourceValue + \"\');\\\" \";
s += \" class=\\\"suggest_link\\\" >\" + sourceText + \"</div>\";
suggestText.innerHTML += s;
}
}
else {
suggestText.style.display = \"none\";
}
}
}
}; //指定响应函数
o.send(null); // 发送请求
}
else {
suggestText.style.display = \"none\";
}
}
function delayExecute() {
$(\"valueResult\").value = \"\";
window.setTimeout(function () { searchSuggest() }, 800);
//延时处理
}
function suggestOver(div_value) {
div_value.className = \"suggest_link_over\";
}
function suggestOut(div_value) {
div_value.className = \"suggest_link\";
}
function setSearch(a, b) {
$(\"txtSearch\").value = a;
$(\"valueResult\").value = b;
var div = $(\"suggestResult\");
div.innerHTML = \"\";
div.style.display = \"none\";
}
function showResult() {
alert($(\"txtSearch\").value + $(\"valueResult\").value);
}
</script>
</head>
<body>
<form id=\"form1\" action=\"\">
<input type=\"text\" id=\"txtSearch\" name=\"txtSearch\" onkeyup=\"delayExecute();\" size=\"20\"
class=\"input_out\" onfocus=\"this.className=\'input_on\';this.onmouseout=\'\'\"
onblur=\"this.className=\'input_off\';this.onmouseout=function(){this.className=\'input_out\'};\"
onmousemove=\"this.className=\'input_move\'\" onmouseout=\"this.className=\'input_out\'\" />
<input type=\"hidden\" id=\"valueResult\" name=\"valueResult\" value=\"\" />
<br />
<div id=\"suggestResult\" style=\"display: none\">
</div>
<br/>
<input id=\"button1\" type=\"button\" value=\"提交\" onclick=\"showResult();\" />
</form>
</body>
</html>
服务器端C#代码
<%@ WebHandler Language=\"C#\" Class=\"SearchResult\" %>
using System;
using System.Web;
using System.Data;
public class SearchResult : IHttpHandler {
public void ProcessRequest (HttpContext context) {
object QueryWord=context.Request.QueryString[\"searchText\"];
if (QueryWord != null)
{
if (QueryWord.ToString().Trim().Length > 0)
{
DataTable dt = getDB();
string returnText = \"\";
if (dt != null && dt.Rows.Count > 0)
{
DataRow[] dr = dt.Select(\" name like \'%\" + QueryWord .ToString()+ \"%\' \");
if (dr.Length > 0)
{
for (int i = 0; i < dr.Length; i++)
{
//可设置返回多字符串
returnText += dr[i][\"id\"].ToString() + \"@\" + dr[i][\"name\"].ToString() + \"\\n\";
}
}
}
context.Response.Write(returnText);
context.Response.End();
}
}
}
public bool IsReusable {
get {
return false;
}
}
/// <summary>
/// 获取数据源的方法
/// </summary>
/// <returns>数据源</returns>
private DataTable getDB()
{
DataTable dt = new DataTable();
dt.Columns.Add(\"id\");
dt.Columns.Add(\"name\");
dt.Columns.Add(\"age\");
dt.Rows.Add(new object[] { \"000001\", \"张三\", \"26\" });
dt.Rows.Add(new object[] { \"000002\", \"张晓\", \"26\" });
dt.Rows.Add(new object[] { \"000003\", \"张岚\", \"27\" });
dt.Rows.Add(new object[] { \"000004\", \"李四\", \"25\" });
dt.Rows.Add(new object[] { \"000005\", \"李星\", \"27\" });
return dt;
}
}
希望本文所述对大家的javascript程序设计有所帮助。
本文地址:https://www.stayed.cn/item/11658
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我