热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle输入自动提示,JSP+ajax实现输入框自动补全功能实例代码

Stringpathrequest.getContextPath();StringbasePathrequest.getScheme():request.getServerNa

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

查找

function mSift_SeekTp(oObj, nDire) {

var nPosition = null;

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) {

nPosition = oObj.offsetLeft;

} else {

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 | mrxcool.com',

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() {

},

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 &#61; _this.SelIndex <_this.ReData.length - 1 ? _this.SelIndex &#43; 1

: 0;

break;

default:

_this.SelIndex &#61; 0;

}

if (_this.Listeners) {

clearInterval(_this.Listeners);

}

_this.Listeners &#61; setInterval(function() {

_this.Get();

}, 10);

},

Get : function() {

var _this &#61; this;

if (_this.Target.value &#61;&#61; &#39;&#39;) {

_this.Clear();

return;

}

if (_this.Listeners) {

clearInterval(_this.Listeners);

}

;

_this.ReData &#61; [];

var cResult &#61; &#39;&#39;;

for ( var i &#61; 0; i <_this.Data.length; i&#43;&#43;) {

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

_this.Target.value.toLowerCase()) >&#61; 0) {

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

if (_this.ReData.length &#61;&#61; _this.Max) {

break;

}

}

}

var cRegPattern &#61; _this.Target.value.replace(/\*/g, &#39;*&#39;);

cRegPattern &#61; cRegPattern.replace(/\|/g, &#39;|&#39;);

cRegPattern &#61; cRegPattern.replace(/\&#43;/g, &#39;\\&#43;&#39;);

cRegPattern &#61; cRegPattern.replace(/\./g, &#39;\\.&#39;);

cRegPattern &#61; cRegPattern.replace(/\?/g, &#39;\\?&#39;);

cRegPattern &#61; cRegPattern.replace(/\^/g, &#39;\\^&#39;);

cRegPattern &#61; cRegPattern.replace(/\$/g, &#39;\\$&#39;);

cRegPattern &#61; cRegPattern.replace(/\(/g, &#39;\\(&#39;);

cRegPattern &#61; cRegPattern.replace(/\)/g, &#39;\\)&#39;);

cRegPattern &#61; cRegPattern.replace(/\[/g, &#39;\\[&#39;);

cRegPattern &#61; cRegPattern.replace(/\]/g, &#39;\\]&#39;);

cRegPattern &#61; cRegPattern.replace(/\\/g, &#39;\\\\&#39;);

var cRegEx &#61; new RegExp(cRegPattern, &#39;i&#39;);

for ( var i &#61; 0; i <_this.ReData.length; i&#43;&#43;) {

if (_this.Target.value.indexOf(&#39;*&#39;) >&#61; 0) {

_this.ReData[i] &#61; _this.ReData[i].replace(/\*/g, &#39;*&#39;);

}

if (_this.Target.value.indexOf(&#39;|&#39;) >&#61; 0) {

_this.ReData[i] &#61; _this.ReData[i].replace(/\|/g, &#39;|&#39;);

}

cResult &#43;&#61; &#39;

&#39;

&#43; _this.ReData[i]

.replace(

cRegEx,

function(s) {

return &#39;&#39;

&#43; s &#43; &#39;&#39;;

});

&#43;&#39;

&#39;;

}

if (cResult &#61;&#61; &#39;&#39;) {

_this.Clear();

} else {

_this.TgList.innerHTML &#61; cResult;

_this.TgList.style.cssText &#61; &#39;display:block;position:absolute;background:#fff;border:#090 solid 1px;margin:-1px 0 0;padding: 5px;list-style:none;font-size:12px;&#39;;

_this.TgList.style.top &#61; mSift_SeekTp(_this.Target, 2) &#43; &#39;px&#39;;

_this.TgList.style.left &#61; mSift_SeekTp(_this.Target, 3) &#43; &#39;px&#39;;

_this.TgList.style.width &#61; _this.Target.offsetWidth - 12 &#43; &#39;px&#39;;

}

var oLi &#61; _this.TgList.getElementsByTagName(&#39;li&#39;);

if (oLi.length > 0) {

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

}

},

ChangeOn : function(oObj) {

var oLi &#61; this.TgList.getElementsByTagName(&#39;li&#39;);

for ( var i &#61; 0; i

oLi[i].style.cssText &#61; &#39;padding:0 5px;line-height:20px;cursor:default;&#39;;

}

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

},

Clear : function() {

var _this &#61; this;

if (_this.TgList) {

_this.TgList.style.display &#61; &#39;none&#39;;

_this.ReData &#61; [];

_this.SelIndex &#61; 0;

}

}

}

//建立实例&#xff0c;第一个参数是实例对象的名称&#xff0c;第二个是最多显示的数量

var oo &#61; new mSift(&#39;oo&#39;, 20);

//获取数据

function loadXMLDoc(str) {

var xmlhttp;

if (window.XMLHttpRequest) {// code for IE7&#43;, Firefox, Chrome, Opera, Safari

xmlhttp &#61; new XMLHttpRequest();

} else {// code for IE6, IE5

xmlhttp &#61; new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange &#61; function() {

if (xmlhttp.readyState &#61;&#61; 4 && xmlhttp.status &#61;&#61; 200) {

oo.Data &#61; xmlhttp.responseText.split("|");

}

};

xmlhttp.open("GET", "AjaxServlet?name&#61;"&#43;str, true);

xmlhttp.send();

}

//指定文本框对象建立特效

oo.Create(document.getElementById(&#39;abc&#39;));



推荐阅读
  • 如何在PHP中准确获取服务器IP地址?
    如何在PHP中准确获取服务器IP地址? ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
author-avatar
琳琳小朋友m
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有