/* 
** 本文例子所引用的jQuery版本为 jQuery-1.8.3.min.js
** Author:博客园小dee
*/

 

本文用 jQuery 实现一个用户输入字符时出现能够提示邮箱后缀名的下拉菜单,并且在选择下拉菜单中的邮箱后缀名后可自动填充未完成的输入框,在做这个功能时候,我参考的是网易注册(http://reg.163.com/reg/reg.jsp?product=urs)中的邮箱栏目所实现的功能与效果。这个功能的目的是使用户在填写邮箱栏目的过程中,在带有邮箱后缀名的菜单的提示下,可以不需要完整输入自己的注册邮箱,达到方便、快捷、友好的效果。在做这个功能的时候,需要充分站在使用者的角度,看怎样设计能够最符合通常情况下人们的使用习惯,又怎样设计反而会让用户感到不便。先来看看功能实现的演示效果图:

 在线演示:http://jsfiddle.net/vudr00xc/embedded/result/

 

①初始状态,邮箱栏目未获得焦点时 

jQuery 实现带下拉提示且自动填充的邮箱

  以及 鼠标点击后获得焦点时

jQuery 实现带下拉提示且自动填充的邮箱

 

②以空白字符( space , tab ) 以及@开头时,不出现提示菜单

jQuery 实现带下拉提示且自动填充的邮箱

 

③输入有效字符时,提示下拉菜单出现,用户输入的内容自动添加进菜单,并且第一条提示栏目获得高亮

jQuery 实现带下拉提示且自动填充的邮箱

 

④输入的字符第一次出现"@"时,输入的"@"并不加入提示菜单

jQuery 实现带下拉提示且自动填充的邮箱

 

⑤"@"之后出现有效字符时,就会同提示菜单中的邮件后缀从后缀首位起进行比较,把和用户输入的邮箱后缀不同的提示从菜单中去掉。同时过滤后的第一条提示获得高亮。在完全匹配之后,下拉菜单隐藏。

jQuery 实现带下拉提示且自动填充的邮箱

jQuery 实现带下拉提示且自动填充的邮箱

jQuery 实现带下拉提示且自动填充的邮箱

 

⑥用户删除邮件输入框中的字符时,呈现的效果顺序是 ⑤图3---> ⑤图2---> ⑤图1---> ④图

 

⑦按下键盘方向键向上或向下使菜单相应提示高亮

jQuery 实现带下拉提示且自动填充的邮箱

 

 ⑧鼠标划过菜单提示时,原先的高亮消失,鼠标划过的栏目获得高亮;鼠标移开,保持之前鼠标划过的栏目高亮,直到用户继续输入字符,栏目失去高亮,同时第一条可见的提示高亮

jQuery 实现带下拉提示且自动填充的邮箱

 

⑨点击高亮提示或者高亮处回车,自动填充邮箱元素,选择完成,菜单收起

jQuery 实现带下拉提示且自动填充的邮箱

 

⑩在下拉菜单展开时,鼠标点击页面任何元素,菜单收起

 

注:此功能不包括正则验证邮箱格式。

本功能没有用到什么复杂的知识点,只有简单的JS字符串的匹配 ( match )、位置检索 ( indexOf ) 、截取 ( substr ) 以及jQuery选择器的应用等。更主要的是对功能的逻辑分析要思路清晰,以及思考如何设计能真正使用户操作简便。这个功能的事件主要包括:

jQuery 实现带下拉提示且自动填充的邮箱

 

代码分析:

 HTML和CSS代码

1 <div class="ipt">
2     <input type="text" name="uemail" id="uemail" placeholder="请输入常用邮箱"/>
3     <ul class="autoul"></ul>
4 </div>
HTML

相关文章: