<!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Email Suggest 邮箱输入提示演示</title> </head> <body> <div id="title"> <h1>Email Suggest 邮箱输入提示演示</h1> </div> <div id="wrapper"> <div id="login_box"> <div class="clearfix"><label for="email">电子邮箱:</label><input type="text" id="email" autocomplete="off" /></div> <ul id="email_list"> <li class="first_li">请选择邮箱类型</li> <li></li> <li>@163.com</li> <li>@126.com</li> <li>@qq.com</li> <li>@yahoo.com.cn</li> <li>@gmail.com</li> <li>@sohu.com</li> <li>@hotmail.com</li> <li>@sina.com</li> <li>@sina.cn</li> <li>@139.com</li> </ul> </div> </div> </body> </html>
*{ margin:0; padding:0 } body{background:#f3f3f3;font-size:12px;font-family:arial;} #title{width:320px;margin:3% auto 0;} h1{font-size:18px;} h6{ font-size:12px; font-weight:normal; color:#333;margin-bottom:10px; } h6 a { color:#09c; } #wrapper{ width:320px; height:30px; margin:30px auto 0; background:#fff; border:1px solid #ccc; -moz-border-radius:4px; border-radius:4px; padding:20px; -moz-box-shadow:1px 1px 4px #d3d3d3; } #login_box{position:relative;} .clearfix label{font-size:14px;float:left;} .clearfix{height:30px;line-height:30px;} .clearfix:after{height:0;visibility:hidden;content:'.';overflow:hidden;display:block;} #email{ width:180px; height:18px; border:1px solid #74c9e6; padding:5px 6px; background:#fff; margin-left:10px; -moz-border-radius:2px; border-radius:2px; font-family:arial; float:left; } #email_list{ width:192px; list-style:none; border:1px solid #74c9e6; -moz-border-radius:0 0 2px 2px; border-radius:2px; position:absolute; top:29px; left:80px; background:#fff; display:none; } #email_list li{ width:100%; height:30px; line-height:30px; text-indent:10px; cursor:pointer; overflow:hidden; } #email_list li.first_li{cursor:default;} #email_list .current{background:#baeafb;}
(function() { /* 初始化 */ var emailInput = document.getElementById('email'), list = document.getElementById('email_list'), items = list.getElementsByTagName('li'), item1 = items[1], len = items.length, suffix = [], newSuffix, indexA, indexB, highlight = 'current', isIE = navigator.userAgent.toLowerCase().indexOf('msie') != -1, clearClassname = function() { for (var i = 1, el; i < len && (el = items[i]); i++) { el.className = ''; } }; /* 将邮箱后缀存放到一个新数组中 */ for (var j = 1, el; j < len && (el = items[j]); j++) { suffix[suffix.length++] = el.innerHTML; } /* 邮箱输入框绑定keyup事件 */ emailInput.onkeyup = suggest; /* suggest核心部分 */ function suggest(event) { var e = event || window.event, eCode = e.keyCode, val = this.value, index = val.indexOf('@'), isIndex = index !== -1; clearClassname(); //输入框不为空 if (val) { item1.className = highlight; list.style.display = 'block'; for (var i = 1, el; i < len && (el = items[i]); i++) { el.onmouseover = function() { clearClassname(); item1.className = ''; this.className = highlight; indexA = 1; indexB = 0; } el.onmouseout = function() { this.className = ''; item1.className = highlight; } el.onclick = function() { emailInput.value = this.innerHTML; } } } //输入框为空 else { item1.className = ''; for (var i = 1, el; i < len && (el = items[i]); i++) { el.onmouseout = el.onmouseover = el.onclick = null; } if (eCode === 38 || eCode === 40 || eCode === 13) return; } item1.innerHTML = val; newSuffix = []; //初始化空数组 for (var i = 1, el; i < len && (el = items[i]); i++) { /* 以邮箱后缀和输入框中@标志符后是否 有相同的字符串来显示或隐藏该元素 */ el.style.display = isIndex && el.innerHTML.indexOf(val.substring(index)) === -1 ? 'none': 'block'; if (i > 1) el.innerHTML = (isIndex ? val.substring(0, index) : val) + suffix[i - 1]; /* 出现@标志符时将新的元素的排列顺序 存放到空数组newSuffix中 */ if ((!isIE && window.getComputedStyle(el, null).display === 'block') || (isIE && el.currentStyle.display === 'block')) { newSuffix[newSuffix.length++] = i; } } /* 判断按键 */ switch (eCode) { case 38: //上方向键 keyMove( - 1); break; case 40: //下方向键 keyMove(1); break; case 13: //回车键 getVal(); break; default: indexA = 1; indexB = 0; return; } } /* 方向键控制元素的高亮效果 */ function keyMove(n) { var newLen = newSuffix.length; if (newLen > 0 && newLen < 8) { items[newSuffix[indexB]].className = item1.className = ''; indexB += n; if (indexB === newLen) indexB -= newLen; else if (indexB < 0) indexB += newLen; items[newSuffix[indexB]].className = highlight; } else { items[indexA].className = item1.className = ''; indexA += n; if (indexA === len) indexA -= len - 1; else if (indexA === 0) indexA += len - 1; items[indexA].className = highlight; } } /* 获取当前高亮元素的值 */ function getVal() { var newLen = newSuffix.length; emailInput.value = newLen > 0 && newLen < 8 ? items[newSuffix[indexB]].innerHTML: items[indexA].innerHTML; list.style.display = 'none'; } /* 关闭提示层 */ document.onclick = function(e) { var e = e || window.event, eNode = e.target ? e.target: e.srcElement; if (eNode !== emailInput && eNode !== items[0]) { list.style.display = 'none'; } } })();
相关推荐
本篇文章主要围绕着“sailjson对象模板”,“suggest3hr”,“sailjsonlist”,以及“pbjson对象”这四个关键词,来详细阐述它们与JSON相关的知识点。 首先,我们来看“sailjson对象模板”。这是一个可能自定义的...
<script src="search_suggest.js"> 此二文件必须放于调用函数之前 调用函数 **以下是调用示例**: $("#test2").suggestShow("aa","search.asp","ddd",2,1,1,"search.asp") 函数介绍: test2 必填 需要添加该插件的...
这个功能广泛应用于各种在线服务,例如邮箱地址输入、搜索引擎搜索框和电子商务网站的商品搜索框,以提高用户输入效率和体验。 在网页开发中,`inputSuggest` 的工作原理是监听文本框的输入事件,当用户开始输入...
- **变量声明**:在`Suggest`构造函数中,我们获取了`<input>`元素(邮箱输入框)和`<ul>`元素(邮箱后缀列表),并将其存储为对象属性。 - **原型链方法**:`Suggest.prototype`包含了两个方法`init`和`toChange`...
首先,`suggest-0.1.js` 文件很可能是一个实现了自动补全功能的JavaScript库。在JavaScript中,自动补全通常基于数据结构,如数组或对象,来存储可能的补全选项。当用户在输入框中输入字符时,这个库会实时检查输入...
- 建议邮箱:suggest@mathworks.com - Bug报告邮箱:bugs@mathworks.com - 文档错误报告邮箱:doc@mathworks.com - 注册邮箱:subscribe@mathworks.com - 服务状态、许可证续订、密码邮箱:service@mathworks.com - ...
- 增强建议邮箱:[suggest@mathworks.com](mailto:suggest@mathworks.com) - 虫子报告邮箱:[bugs@mathworks.com](mailto:bugs@mathworks.com) - 文档错误报告邮箱:[doc@mathworks.com](mailto:doc@mathworks....
- **产品建议邮箱**:suggest@mathworks.com,接收用户对产品改进的意见和建议。 - **错误报告邮箱**:bugs@mathworks.com,收集并处理用户发现的软件bug。 - **文档纠错邮箱**:doc@mathworks.com,负责修正文档中...
7. 提供者信息:文档最后提到了手册的编制者信息,包括邮箱地址、所属单位以及地址,这可能表明手册是个人编写的,用于教学或个人学习目的。 8. 编辑注意事项:文档内容由于OCR技术识别错误,需要用户根据上下文...
- 技术建议邮箱:[suggest@mathworks.com](mailto:suggest@mathworks.com) - Bug报告邮箱:[bugs@mathworks.com](mailto:bugs@mathworks.com) - 文档错误报告邮箱:[doc@mathworks.com](mailto:doc@mathworks.com...
- **产品改进建议邮箱**:suggest@mathworks.com - **错误报告邮箱**:bugs@mathworks.com - **文档错误报告邮箱**:doc@mathworks.com - **订阅注册邮箱**:subscribe@mathworks.com - **订单状态查询邮箱**:...
- 建议反馈邮箱:suggest@mathworks.com - Bug报告邮箱:bugs@mathworks.com - 文档错误报告邮箱:doc@mathworks.com - **联系方式**: - 地址:The MathWorks, Inc., 3 Apple Hill Drive, Natick, MA 01760-...
6.5.2.24 内容自动完成、Suggest 174 6.5.2.24.1 效果 175 6.5.2.24.2 应用说明 176 6.5.2.25 WYSIWYG在线Html内容编辑器 179 6.5.2.25.1 SinaEditor 179 6.5.2.25.2 CKEditor 181 6.5.2.26 JMesa 184 6.5.2.26.1 ...
- **产品增强建议邮箱**: [suggest@mathworks.com](mailto:suggest@mathworks.com) - **错误报告邮箱**: [bugs@mathworks.com](mailto:bugs@mathworks.com) ##### 3. 版权声明 文档末尾还包括了一份详细的版权声明...
##### 3.3 邮箱地址选择 ```html <label>E-Mail(local): ``` ```javascript $("#email").autocomplete(emails, { minChars: 0, width: 310, matchContains: "word", // 更多配置... }); ``` - **分析*...