<!doctype html>
<html>
<style>
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
.auto_hidden {
width:204px;border-top: 1px solid #333;
border-bottom: 1px solid #333;
border-left: 1px solid #333;
border-right: 1px solid #333;
position:absolute;
display:none;
}
.auto_show {
width:204px;
border-top: 1px solid #333;
border-bottom: 1px solid #333;
border-left: 1px solid #333;
border-right: 1px solid #333;
position:absolute;
z-index:9999; /* 设置对象的层叠顺序 */
display:block;
}
.auto_onmouseover{
color:#ffffff;
background-color:highlight;
width:100%;
}
.auto_onmouseout{
color:#000000;
width:100%;
background-color:#ffffff;
}
</style>
<script language="javascript">
var $ = function (id) {
return "string" == typeof id ? document.getElementById(id) : id;
}
var Bind = function(object, fun) {
return function() {
return fun.apply(object, arguments);
}
}
function AutoComplete(obj,autoObj,arr){
this.obj=$(obj); //输入框
this.autoObj=$(autoObj);//DIV的根节点
this.value_arr=arr; //不要包含重复值
this.index=-1; //当前选中的DIV的索引
this.search_value=""; //保存当前搜索的字符
}
AutoComplete.prototype={
//初始化DIV的位置
init: function(){
this.autoObj.style.left = this.obj.offsetLeft + "px";
this.autoObj.style.top = this.obj.offsetTop + this.obj.offsetHeight + "px";
this.autoObj.style.width= this.obj.offsetWidth - 2 + "px";//减去边框的长度2px
},
//删除自动完成需要的所有DIV
deleteDIV: function(){
while(this.autoObj.hasChildNodes()){
this.autoObj.removeChild(this.autoObj.firstChild);
}
this.autoObj.className="auto_hidden";
},
//设置值
setValue: function(_this){
return function(){
_this.obj.value=this.seq;
_this.autoObj.className="auto_hidden";
}
},
//模拟鼠标移动至DIV时,DIV高亮
autoOnmouseover: function(_this,_div_index){
return function(){
_this.index=_div_index;
var length = _this.autoObj.children.length;
for(var j=0;j<length;j++){
if(j!=_this.index ){
_this.autoObj.childNodes[j].className='auto_onmouseout';
}else{
_this.autoObj.childNodes[j].className='auto_onmouseover';
}
}
}
},
//更改classname
changeClassname: function(length){
for(var i=0;i<length;i++){
if(i!=this.index ){
this.autoObj.childNodes[i].className='auto_onmouseout';
}else{
this.autoObj.childNodes[i].className='auto_onmouseover';
this.obj.value=this.autoObj.childNodes[i].seq;
}
}
}
,
//响应键盘
pressKey: function(event){
var length = this.autoObj.children.length;
//光标键"↓"
if(event.keyCode==40){
++this.index;
if(this.index>length){
this.index=0;
}else if(this.index==length){
this.obj.value=this.search_value;
}
this.changeClassname(length);
}
//光标键"↑"
else if(event.keyCode==38){
this.index--;
if(this.index<-1){
this.index=length - 1;
}else if(this.index==-1){
this.obj.value=this.search_value;
}
this.changeClassname(length);
}
//回车键
else if(event.keyCode==13){
this.autoObj.className="auto_hidden";
this.index=-1;
}else{
this.index=-1;
}
},
//程序入口
start: function(event){
if(event.keyCode!=13&&event.keyCode!=38&&event.keyCode!=40){
this.init();
this.deleteDIV();
this.search_value=this.obj.value;
var valueArr=this.value_arr;
valueArr.sort();
if(this.obj.value.replace(/(^\s*)|(\s*$)/g,'')==""){ return; }//值为空,退出
try{ var reg = new RegExp("(" + this.obj.value + ")","i");}
catch (e){ return; }
var div_index=0;//记录创建的DIV的索引
for(var i=0;i<valueArr.length;i++){
if(reg.test(valueArr[i])){
var div = document.createElement("div");
div.className="auto_onmouseout";
div.seq=valueArr[i];
div.onclick=this.setValue(this);
div.onmouseover=this.autoOnmouseover(this,div_index);
div.innerHTML=valueArr[i].replace(reg,"<strong>$1</strong>");//搜索到的字符粗体显示
this.autoObj.appendChild(div);
this.autoObj.className="auto_show";
div_index++;
}
}
}
this.pressKey(event);
window.onresize=Bind(this,function(){this.init();});
}
}
//-->
</SCRIPT>
<body>
<h1 align="center">自动完成函数(Autocomplete Function)</h1>
<div align="center"><input type="text" style="width:300px;height:20px;font-size:14pt;" id="o" onkeyup="autoComplete.start(event)"></div>
<div class="auto_hidden" id="auto"><!--自动完成 DIV--></div>
<script>
var autoComplete=new AutoComplete('o','auto',['b0','b12','b22','b3','b4','b5','b6','b7','b8','b2','abd','ab','acd','accd','b1','cd','ccd','cbcv','cxf']);
</SCRIPT>
</body>
</html>
- 浏览: 748023 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
任楚娴:
你好,请问html = nvl(html); 这句中的nvl( ...
java html串转换成文本串 -
u013246812:
,谢拉!
jQuery ui Dialog 讲解参数 -
大宝剑99:
...
前端优化
发表评论
-
Chrome扩展程序-BES Blocker
2020-11-27 08:35 244## 使用说明 - Change the response ... -
全国最新行政区划代码(Tree)json数据以及地理数据
2020-11-11 21:23 382基于阿里提供的地理数据 http://datav.aliyun ... -
百度搜索api
2020-11-07 15:26 682<div class="iteye-blog- ... -
Puppeteer 说明记录
2020-11-06 10:52 640<div class="iteye-blo ... -
文本水印
2019-12-20 17:55 473打开控制台,copy如下代码: (functio ... -
unicode字符集特殊符号对应html/js/css符号
2019-04-24 14:46 785转自: http://www.cnblogs.com/cha ... -
网站灰度支持
2015-01-02 07:22 8841 <style>html {overflo ... -
js 端排序 获取td里边的内容去html串化
2014-09-26 18:12 867<script> function delHtml ... -
ie浏览器下的css expression使用
2014-03-06 16:39 1223针对ie浏览器有些情况下显示效果比较差,所以针对ie ... -
js 屏蔽form的onkeydown onkeyup onkeypress 的13按键
2013-07-11 10:49 1828js 屏蔽form的onkeydown onkeyup on ... -
Cookie path的设置
2013-02-21 10:58 1952cookie path 设置 IE对如下的co ... -
html5 (标签一览)
2012-10-16 19:22 1021html5 标签 按字母顺序排 ... -
一键分享腾讯微博,新浪微博等api(WEB 版)
2012-08-10 09:38 10434腾讯微博分享 <script type=" ... -
DOJO js 基本dom操作
2012-06-20 09:44 4619/** ** 基本的DOM操作只是用到了dojo的核 ... -
原始ajax api 操作
2012-04-12 18:00 1099String.prototype.trim = func ... -
js 动态 添加 删除 tr
2012-04-12 17:27 5764今天给新人出了一道题: dom 和 javascrip ... -
ie8下 vml
2012-04-01 13:51 1685近期在做web流程设计器,在ie7下没有问题,显示出来了,但是 ... -
flex vs html5
2011-12-18 18:09 2161何时使用HTML5,而不是Fl ... -
java毕业设计 计算机毕业设计 软件定制开发
2011-10-01 07:00 86工作室承接各种毕业设计以及软件定制开发。 java毕业设计 ... -
opener parent showModalDialog父窗口
2011-09-19 09:31 3549opener与parent的区别 opene ...
相关推荐
在网页中,动态填充指的是根据用户的行为或特定条件,自动在输入框中填充或更新信息的功能。这通常用于搜索框的自动补全、表单的预填充等场景。jQuery提供了强大的选择器、事件监听和DOM操作功能,使得实现这一功能...
清除input在浏览器中自动填充用户名等的情况,JQuery解决,IE8 ,chrome等均可以使用。
在酒店系统开发中,一个高效、好用的自动填充JS控件能够极大地提升用户体验,简化用户的输入操作,提高数据录入的准确性和效率。下面将详细介绍这种控件的工作原理、应用价值以及如何在实际项目中实施。 首先,自动...
自动完成(AutoComplete)则是当用户输入一部分文本后,系统自动填充剩余的部分,以完成完整的条目。这可以使用.NET Framework提供的`AutoCompleteStringCollection`类和`AutoCompleteMode`属性来实现。首先,你需要...
这通常用于表单字段,可以设置一个定时器来自动填充输入框的值。假设我们有一个id为`autoFillInput`的输入框,我们可以这样做: ```javascript $(document).ready(function() { var valueToFill = '自动填充的内容...
标题中的“输入框自动完成AJAX”是一种常见的前端开发技术,用于提高用户在网页上的输入效率。自动完成功能,也称为自动填充或建议输入,它根据用户在输入框中键入的内容,动态地提供可能的匹配选项。这种功能在搜索...
本文将详细讲解如何利用jQuery实现输入框自动补全邮箱提示。 首先,我们需要理解jQuery的基本用法。jQuery是一个JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。在jQuery中,我们通常通过...
"仿google输入框自动完成输入源码,js实现,方便使用" 描述进一步强调了这个功能是用JavaScript语言实现的,并且设计得易于使用。这意味着开发者可以轻松地将这个代码集成到他们的网站中,为自己的搜索框添加自动...
4. 为了进一步防止自动填充,可以使用CSS隐藏真实的输入框,并创建覆盖在上面的假输入框,真输入框通过JavaScript处理。这样,即使浏览器填充了表单,用户看到的仍然是空白的输入框。 在实现自动登录功能时,通常...
5. **处理用户选择**:当用户点击匹配项时,可以将其自动填充到输入框,并隐藏下拉列表: ```javascript suggestionList.addEventListener('click', (event) => { if (event.target.tagName.toLowerCase() === '...
这个项目就是针对这种情况提供的一种解决方案,它利用jQuery库和相关的JavaScript插件来实现自动填充功能。这里我们将详细探讨“日本都道府县填充,邮编自动填充基于jquery.zip2addr.js实现”这一主题。 首先,`...
本文将深入探讨该插件的参数使用,以便开发者能够灵活定制自己的自动填充效果。 首先,我们需要引入jQuery库和jQuery UI库,这两个库是使用Autocomplete插件的基础。在HTML文件中,确保引入了以下两个链接: ```...
很漂亮、兼容火狐的Js日期选择,自动填充到输入框</title> <meta http-equiv=”content-Type” content=”text/html;charset=gb2312″> <style type=”text/css”> body{font-size:12px;font-...
在IT行业中,自动获取短信验证码并填充是一项常见的自动化任务,特别是在移动应用或网站的身份验证环节。这个过程涉及到了几个关键的技术点,包括短信监听、数据解析以及自动化控制。以下是对这些知识点的详细解释:...
3. **自动填充**:在事件处理函数中,使用JavaScript读取Cookie,然后将Cookie值填充到对应的输入框。例如: ```javascript document.getElementById('username').addEventListener('focus', function() { var ...
标题中的“自动填充功能实现”通常指的是在软件开发中,特别是在Web应用或移动应用中,为用户输入框设计的一种便捷功能。它能够根据用户输入的字符,动态地提供可能的匹配选项,帮助用户快速完成输入,提高用户体验...
在layui中,"autocomplete"是一款自动填充插件,常用于输入框,提供智能提示功能,提高用户输入效率。这款插件适用于各种需要自动补全场景,如搜索框、表单填写等。 在layui的autocomplete插件中,主要涉及以下知识...
本示例“JavaWeb ajax异步自动填充信息”是一个典型的Ajax应用,模拟了搜索引擎如百度在用户输入时自动填充建议的功能。 首先,我们需要理解Ajax的工作原理。Ajax的核心是XMLHttpRequest对象,它允许JavaScript在...
此外,还可以通过JavaScript监听`input`事件,清除自动填充的内容: ```javascript document.getElementById('username').addEventListener('input', function(e) { if (this.value === '') { this.value = ''; ...
为了更好地理解这个过程,你可以创建一个简单的Qt项目,导入QWebView,加载QQ邮箱登录页面,然后在程序中注入上述代码以自动填充邮箱地址并模拟点击登录按钮。别忘了处理可能出现的错误,例如元素不存在或...