`

搜索框根据输入自动提示--js实现

    博客分类:
  • js
js 
阅读更多


js文件内容:

function mSift_SeekTp(oObj, nDire) {

if (oObj.getBoundingClientRect && !document.all) {

var oDc = document.documentElement;

switch (nDire) {

case 0 :

return oObj.getBoundingClientRect().top + oDc.scrollTop;

case 1 :

return oObj.getBoundingClientRect().right + oDc.scrollLeft;

case 2 :

return oObj.getBoundingClientRect().bottom + oDc.scrollTop;

case 3 :

return oObj.getBoundingClientRect().left + oDc.scrollLeft;

}

} else {

if (nDire == 1 || nDire == 3) {

var nPosition = oObj.offsetLeft;

} else {

var nPosition = oObj.offsetTop;

}

if (arguments[arguments.length - 1] != 0) {

if (nDire == 1) {

nPosition += oObj.offsetWidth;

} else if (nDire == 2) {

nPosition += oObj.offsetHeight;

}

}

if (oObj.offsetParent != null) {

nPosition += mSift_SeekTp(oObj.offsetParent, nDire, 0);

}

return nPosition;

}

}

function mSift(cVarName, nMax) {

this.oo = cVarName;

this.Max = nMax;

}

mSift.prototype = {

Varsion : 'v2010.10.29 by AngusYoung',

Target : Object,

TgList : Object,

Listeners : null,

SelIndex : 0,

Data : [],

ReData : [],

Create : function(oObj) {

var _this = this;

var oUL = document.createElement('ul');

oUL.style.display = 'none';

oObj.parentNode.insertBefore(oUL, oObj);

_this.TgList = oUL;

oObj.onkeydown = oObj.onclick = function(e) {

_this.Listen(this, e);

};

oObj.onblur = function() {

setTimeout(function() {

_this.Clear();

}, 100);

};

},

Complete : function() {

handleData();

},

Select : function() {

var _this = this;

if (_this.ReData.length > 0) {

_this.Target.value = _this.ReData[_this.SelIndex].replace(/\*/g,

'*').replace(/\|/g, '|');

_this.Clear();

}

setTimeout(function() {

_this.Target.focus();

}, 10);

_this.Complete();

},

Listen : function(oObj) {

var _this = this;

_this.Target = oObj;

var e = arguments[arguments.length - 1];

var ev = window.event || e;

switch (ev.keyCode) {

case 9 :// TAB

return;

case 13 :// ENTER

_this.Target.blur();

_this.Select();

return;

case 38 :// UP

_this.SelIndex = _this.SelIndex > 0

? _this.SelIndex - 1

: _this.ReData.length - 1;

break;

case 40 :// DOWN

_this.SelIndex = _this.SelIndex < _this.ReData.length - 1

? _this.SelIndex + 1

: 0;

break;

default :

_this.SelIndex = 0;

}

if (_this.Listeners) {

clearInterval(_this.Listeners);

}

_this.Listeners = setInterval(function() {

_this.Get();

}, 10);

},

Get : function() {

var _this = this;

if (_this.Target.value == '') {

_this.Clear();

return;

}

if (_this.Listeners) {

clearInterval(_this.Listeners);

};

_this.ReData = [];

var cResult = '';

for (var i = 0; i < _this.Data.length; i++) {

if (_this.Data[i].toLowerCase().indexOf(_this.Target.value

.toLowerCase()) >= 0) {

_this.ReData.push(_this.Data[i]);

if (_this.ReData.length == _this.Max) {

break;

}

}

}

var cRegPattern = _this.Target.value.replace(/\*/g, '*');

cRegPattern = cRegPattern.replace(/\|/g, '|');

cRegPattern = cRegPattern.replace(/\+/g, '\\+');

cRegPattern = cRegPattern.replace(/\./g, '\\.');

cRegPattern = cRegPattern.replace(/\?/g, '\\?');

cRegPattern = cRegPattern.replace(/\^/g, '\\^');

cRegPattern = cRegPattern.replace(/\$/g, '\\$');

cRegPattern = cRegPattern.replace(/\(/g, '\\(');

cRegPattern = cRegPattern.replace(/\)/g, '\\)');

cRegPattern = cRegPattern.replace(/\[/g, '\\[');

cRegPattern = cRegPattern.replace(/\]/g, '\\]');

cRegPattern = cRegPattern.replace(/\\/g, '\\\\');

var cRegEx = new RegExp(cRegPattern, 'i');

for (var i = 0; i < _this.ReData.length; i++) {

if (_this.Target.value.indexOf('*') >= 0) {

_this.ReData[i] = _this.ReData[i].replace(/\*/g, '*');

}

if (_this.Target.value.indexOf('|') >= 0) {

_this.ReData[i] = _this.ReData[i].replace(/\|/g, '|');

}

cResult += '<li style="padding:0 5px;line-height:20px;cursor:default;" onmouseover="'

+ _this.oo

+ '.ChangeOn(this);'

+ _this.oo

+ '.SelIndex='

+ i

+ ';" onmousedown="'

+ _this.oo

+ '.Select();">'

+ _this.ReData[i].replace(cRegEx, function(s) {

return '<span style="font-weight:bold;font-style:normal;">'

+ s + '</span>';

});

+'</li>';

}

if (cResult == '') {

_this.Clear();

} else {

_this.TgList.innerHTML = cResult;

_this.TgList.style.cssText = 'display:block;position:absolute;background:#fff;border:rgb(51, 204, 255) solid 1px;margin:-1px 0 0;padding: 5px;list-style:none;font-size:12px;';

_this.TgList.style.top = mSift_SeekTp(_this.Target, 2) + 'px';

_this.TgList.style.left = mSift_SeekTp(_this.Target, 3) + 'px';

_this.TgList.style.width = _this.Target.offsetWidth + 'px';

}

var oLi = _this.TgList.getElementsByTagName('li');

if (oLi.length > 0) {

oLi[_this.SelIndex].style.cssText = 'background:#36c;padding:0 5px;line-height:20px;cursor:default;color:#fff;';

}

},

ChangeOn : function(oObj) {

var oLi = this.TgList.getElementsByTagName('li');

for (var i = 0; i < oLi.length; i++) {

oLi[i].style.cssText = 'padding:0 5px;line-height:20px;cursor:default;';

}

oObj.style.cssText = 'background:#36c;padding:0 5px;line-height:20px;cursor:default;color:#fff;';

},

Clear : function() {

var _this = this;

if (_this.TgList) {

_this.TgList.style.display = 'none';

_this.ReData = [];

_this.SelIndex = 0;

}

}

}

使用方法:

在加载完毕要实现自动提示的文本框之后

<script type="text/javascript">

var oo=new mSift('oo',20); //提示框最多显示20条数据

oo.Data=${brandNames}; //${brandNames}为从Action中或controller中传过来的JSONArray对象,要弹出的提示内容的集合也可以自己定义

oo.Create(document.getElementById('inputTextId')); //inputTextId 为所要实现自动提示的文本框的id

</script>

说明源链接已无从查到,这可以根据代码判断作者信息Varsion : 'v2010.10.29 by AngusYoung',使用时请勿删除。
分享到:
评论

相关推荐

    输入自动提示搜索提示功能的javascript-sugggestion.js.docx

    本文档详细解析了“输入自动提示搜索提示功能的javascript-sugggestion.js”文档中的关键知识点,旨在帮助开发者理解并掌握如何通过JavaScript实现输入自动提示的功能,类似于百度或Google等搜索引擎中的实时搜索...

    Ajax+JSON 搜索框自动完成提示功能

    在搜索框中实现自动完成提示功能,通常会监听用户在搜索框中输入的字符,当用户输入达到一定长度时,通过Ajax发送请求到服务器。服务器接收到请求后,会查询与输入相关的数据,这些数据通常以JSON格式返回。在前端,...

    jQuery实现搜索框自动提示功能

    在本文中,我们将深入探讨如何使用jQuery来实现一个搜索框的自动提示功能,该功能能够实时从数据库获取搜索建议并动态展示。这个功能是通过监听用户在搜索框中的输入变化,然后利用Ajax异步请求从服务器获取匹配的...

    js--搜索框提示仿百度

    标题“js--搜索框提示仿百度”指的是使用JavaScript实现一个类似百度搜索框的自动提示功能。这个功能在网页上的搜索框中常见,当用户输入文字时,系统会根据已输入的内容,实时显示与之匹配的建议搜索词。下面将详细...

    ajax仿百度搜索输入自动提示

    在网页中,用户在搜索框输入关键字时,系统能够实时地根据输入内容动态显示相关的搜索建议,这种功能在很多网站,尤其是搜索引擎上非常常见。本项目是使用JSP技术实现的一个Ajax自动提示功能,其目的是模拟百度搜索...

    jQuery搜索框输入文字下拉提示菜单bootstrap风格autocomplete

    本项目是将jQuery与Bootstrap结合,实现一个搜索框输入文字时显示下拉提示菜单的特性,即`autocomplete`功能。 `autocomplete`功能通常用于提高用户体验,当用户在搜索框中输入文字时,系统会根据已有的数据提供...

    Jquery AutoComplete组件+Ajax实现搜索框输入提示功能小记

    ### Jquery AutoComplete组件+Ajax实现搜索框输入提示功能详解 #### 前言 在当前Web应用开发中,提供良好的用户体验是至关重要的。本文主要介绍如何使用Jquery AutoComplete组件与Ajax技术来实现搜索框的实时输入...

    select 增加搜索框

    `Chosen`会自动为搜索框添加一个特殊的类名,如`.chosen-search-input`,你可以根据自己的需求通过CSS来定制它的外观。例如: ```css .chosen-search-input { width: 100%; padding: 5px; font-size: 14px; } ...

    基于jquery搜索框输入提示

    实现"基于jQuery搜索框输入提示"的核心在于监听用户在搜索框中的输入事件,并根据输入内容动态地从服务器或本地数据源获取匹配的建议。下面将详细介绍这个过程: 1. **HTML结构**:首先,我们需要一个HTML搜索框...

    输入自动提示搜索提示功能的使用说明-sugggestion.txt.docx

    输入自动提示搜索提示功能是实现了输入框自动弹出相关搜索提示的功能,如百度、google 搜寻框中输入一些字符会以下拉列表形式给出一些提示,提高了用户体验。该功能使用了 jQuery 技术和 Ajax 技术来实现异步数据...

    jquery实现input搜索输入关键词后自动筛选相关信息效果

    在本教程中,我们将深入探讨如何利用jQuery来实现一个搜索输入框的功能,当用户在input框中输入关键词时,能自动筛选并显示与之匹配的相关信息。 首先,我们需要在HTML中设置一个input元素作为搜索框,并且定义一个...

    jquery+php实现用户输入搜索内容时自动提示

    当用户在搜索框输入内容时,jQuery会通过AJAX向`search.php`发送请求,PHP接收关键词并查找匹配的建议,然后将结果以JSON格式返回给前端。前端接收到结果后,将它们显示在搜索框下方的容器中。 这个简单的示例展示...

    搜索框js特效

    "搜索框js特效"就是一种利用JavaScript技术来增强搜索框用户体验的方法。JavaScript是一种广泛使用的客户端脚本语言,它允许开发者在不刷新整个页面的情况下与用户交互,为网页增添动态效果。 在描述中提到的“搜索...

    jquery版搜索框自动补全,智能提示,可连接数据库(适用于.net,java,php等多种语言)

    **jQuery版搜索框自动补全与智能提示技术详解** 在网页开发中,为了提供用户友好的界面和便捷的搜索体验,经常会用到搜索框自动补全功能。此功能能够根据用户输入的部分关键词,实时显示出匹配的建议结果,极大地...

    自动补全提示(可模糊搜索)的输入框

    本文将深入探讨如何使用JavaScript实现一个具备模糊搜索功能的自动补全提示输入框,根据提供的标题和描述,我们将分析其关键知识点。 首先,自动补全的核心是通过用户输入的部分文字来预测他们可能想要完成的完整...

    html5图标下拉搜索框自动匹配代码

    在这个功能中,用户在搜索框输入关键字时,系统会实时地从预设的数据集中匹配包含这些关键字的图标,并以下拉列表的形式展示出来,方便用户快速选择。 首先,我们要理解HTML5在此过程中的角色。HTML5是现代网页的...

    搜索框自动补全/提示关键字jquery插件

    我们经常会在网页中遇到这样一种搜索体验,当你在搜索框中输入关键字时,搜索框会帮助你自动补全你想要的搜索关键字,并提供多种组合供你选择。这次要介绍的这款jQuery插件就是实现搜索框自动补全关键字这个功能,...

    搜索输入框关键词联想提示

    2. **前端技术**:在前端,我们可以使用HTML5的`&lt;input&gt;`元素创建搜索输入框,并结合JavaScript(如jQuery)或现代前端框架(如React、Vue.js)来监听用户的输入事件。当用户输入变化时,触发AJAX请求,向后端发送...

    移动端H5实现搜索框样式源码

    在实际项目中,还需要根据具体需求和设计风格进行调整和优化,确保搜索框与整个应用的风格一致,提供顺畅的用户体验。同时,不断学习和跟进新的前端技术,如Web Components,可以进一步提升搜索框的可维护性和复用性...

Global site tag (gtag.js) - Google Analytics