1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > jquery 实现输入邮箱时自动补全下拉提示功能【javascript】

jquery 实现输入邮箱时自动补全下拉提示功能【javascript】

时间:2019-07-17 15:44:40

相关推荐

jquery 实现输入邮箱时自动补全下拉提示功能【javascript】

web前端|js教程

jquery输入提示功能,jquery邮箱提示

web前端-js教程

记得去年做某个项目的时候,用到了邮箱输入自动提示功能,于是网上搜了一下,发现了这个写得不错,现在回想起来,转载一下,方便查阅。

vip账号共享源码,ubuntu系统网卡转发,虚拟机如何开启tomcat,怎么驱虫爬虫,写自己的php框架,seo创业成本lzw

邮箱的广泛使用得益于它的免费,因此很多网站在注册的时候都会直接使用邮箱作为账号名

vb小游戏源码,vscode调试按钮不可选,ubuntu 删除拨号,tomcat如何开启端口,代理池 爬虫,php class 命名,福建seo优化排名推广方案,最新源码网站源码下载,国微 系统模板lzw

为了提高用户的体验,很多网站都会实现邮箱输入的自动提示功能。

许愿程序源码,小程序vscode 插件,ubuntu 上ss,tomcat l乱码,用sqlite怎么样,虾米音乐下载插件,前端框架十大排名,东软python爬虫培训排名,php刷新重复提交,seo公司优化引流,展示照片的网站模板,商城网页回调,html网页留言板模板lzw

实现效果如图所示:

核心代码(需要jquery的支持):

(function($){ $.fn.mailAutoComplete = function(options){ var defaults = {boxClass: "mailListBox", //外部box样式listClass: "mailListDefault", //默认的列表样式focusClass: "mailListFocus", //列表选样式中markCalss: "mailListHlignt", //高亮样式zIndex: 1,autoClass: true, //是否使用插件自带class样式mailArr: ["","","","","","","","","",""], //邮件数组textHint: false, //文字提示的自动显示与隐藏hintText: "",focusColor: "#333"//blurColor: "#999" }; var settings = $.extend({}, defaults, options || {}); //页面装载CSS样式 if(settings.autoClass && $("#mailListAppendCss").size() === 0){$(.mailListBox{border:1px solid #369; background:#fff; font:12px/20px Arial;}.mailListDefault{padding:0 5px;cursor:pointer;white-space:nowrap;}.mailListFocus{padding:0 5px;cursor:pointer;white-space:nowrap;background:#369;color:white;}.mailListHlignt{color:red;}.mailListFocus .mailListHlignt{color:#fff;}).appendTo($("head"));} var cb = settings.boxClass, cl = settings.listClass, cf = settings.focusClass, cm = settings.markCalss; //插件的class变量 var z = settings.zIndex, newArr = mailArr = settings.mailArr, hint = settings.textHint, text = settings.hintText, fc = settings.focusColor, bc = settings.blurColor; //创建邮件内部列表内容 $.createHtml = function(str, arr, cur){var mailHtml = "";if($.isArray(arr)){ $.each(arr, function(i, n){if(i === cur){ mailHtml +=

+str+@+arr[i]+

; }else{ mailHtml +=

+str+@+arr[i]+

; } });}return mailHtml; }; //一些全局变量 var index = -1, s; $(this).each(function(){var that = $(this), i = $(".justForJs").size(); if(i > 0){ //只绑定一个文本框 return; }var w = that.outerWidth(), h = that.outerHeight(); //获取当前对象(即文本框)的宽高//样式的初始化that.wrap(\) .before(

);var x = $("#mailListBox_" + i), liveValue; //列表框对象that.focus(function(){ //父标签的层级 $(this).css("color", fc).parent().css("z-index", z);//提示文字的显示与隐藏 if(hint && text){var focus_v = $.trim($(this).val());if(focus_v === text){ $(this).val("");} } //键盘事件 $(this).keyup(function(e){s = v = $.trim($(this).val()); if(/@/.test(v)){ s = v.replace(/@.*/, "");}if(v.length > 0){ //如果按键是上下键 if(e.keyCode === 38){ //向上 if(index = newArr.length - 1){index = -1; } index++; }else if(e.keyCode === 13){ //回车 if(index > -1 && index -1 && index < newArr.length){//如果当前有激活列表x.css("left", "-6000px");} }}else{ x.css("left", "-6000px"); } }).blur(function(){if(hint && text){ var blur_v = $.trim($(this).val()); if(blur_v === ""){ $(this).val(text); }}$(this).css("color", bc).unbind("keyup").parent().css("z-index",0);x.css("left", "-6000px");});//鼠标经过列表项事件 //鼠标经过 $(".mailHover").live("mouseover", function(){index = Number($(this).attr("id").split("_")[1]); liveValue = $("#mailList_"+index).text();x.children("." + cf).removeClass(cf).addClass(cl);$(this).addClass(cf).removeClass(cl); });});x.bind("mousedown", function(){ that.val(liveValue);}); }); }; })(jQuery);

html示例:

常用邮箱:

调用的jquery代码:

$("#email").mailAutoComplete({boxClass: "out_box", //外部box样式listClass: "list_box", //默认的列表样式focusClass: "focus_box", //列表选样式中markCalss: "mark_box", //高亮样式autoClass: false,textHint: true //提示文字自动隐藏});

css,这大家自己修改成自己想要的色调

.out_box{border:1px solid #ccc; background:#fff; font:12px/20px Tahoma;} .list_box{border-bottom:1px solid #eee; padding:0 5px; cursor:pointer;} .focus_box{background:#f0f3f9;} .mark_box{color:#c00;}

效果二:

1、此插件为宽度自适应的,也就是当内部文字过长时,外部的div会宽度自动延伸的。在自定义CSS时如果设置了宽度值,则在非IE6浏览器下,宽度自适应失效;

2、无需在样式中为最外部的box设置position属性,或是宽度及高度,这些工作jQuery 插件已经帮你完成,设置了这些属性反而不利于效果的展现;

3、此插件只能使用在单行文本框上,由于未对其他标签类型的元素做限制,所以如果绑定对象不正确,可能会出现一些意想不到的情况.

4.欢迎在使用中提出各种问题和bug.

——————————————–

注:使用方法

CSS代码:

.out_box{border:1px solid #ccc; background:#fff; font:12px/20px Tahoma;}.list_box{border-bottom:1px solid #eee; padding:0 5px; cursor:pointer;}.focus_box{background:#f0f3f9;}.mark_box{color:#c00;}

JS代码:

$("#customTest").mailAutoComplete({ boxClass: "out_box", //外部box样式 listClass: "list_box", //默认的列表样式 focusClass: "focus_box", //列表选样式中 markCalss: "mark_box", //高亮样式 autoClass: false, textHint: true, //提示文字自动隐藏 hintText: "请输入邮箱地址"});

(function($){ $.fn.mailAutoComplete = function(options){ var defaults = {boxClass: "mailListBox", //外部box样式listClass: "mailListDefault", //默认的列表样式focusClass: "mailListFocus", //列表选样式中markCalss: "mailListHlignt", //高亮样式zIndex: 1,autoClass: true, //是否使用插件自带class样式mailArr: ["","","","","","","","","",""], //邮件数组textHint: false, //文字提示的自动显示与隐藏hintText: "",focusColor: "#333",blurColor: "#999" }; var settings = $.extend({}, defaults, options || {}); //页面装载CSS样式 if(settings.autoClass && $("#mailListAppendCss").size() === 0){$(.mailListBox{border:1px solid #369; background:#fff; font:12px/20px Arial;}.mailListDefault{padding:0 5px;cursor:pointer;white-space:nowrap;}.mailListFocus{padding:0 5px;cursor:pointer;white-space:nowrap;background:#369;color:white;}.mailListHlignt{color:red;}.mailListFocus .mailListHlignt{color:#fff;}).appendTo($("head"));} var cb = settings.boxClass, cl = settings.listClass, cf = settings.focusClass, cm = settings.markCalss; //插件的class变量 var z = settings.zIndex, newArr = mailArr = settings.mailArr, hint = settings.textHint, text = settings.hintText, fc = settings.focusColor, bc = settings.blurColor; //创建邮件内部列表内容 $.createHtml = function(str, arr, cur){var mailHtml = "";if($.isArray(arr)){ $.each(arr, function(i, n){if(i === cur){ mailHtml +=

+str+@+arr[i]+

; }else{ mailHtml +=

+str+@+arr[i]+

; } });}return mailHtml; }; //一些全局变量 var index = -1, s; $(this).each(function(){var that = $(this), i = $(".justForJs").size(); if(i > 0){ //只绑定一个文本框 return; }var w = that.outerWidth(), h = that.outerHeight(); //获取当前对象(即文本框)的宽高//样式的初始化that.wrap(\) .before(

);var x = $("#mailListBox_" + i), liveValue; //列表框对象that.focus(function(){ //父标签的层级 $(this).css("color", fc).parent().css("z-index", z);//提示文字的显示与隐藏 if(hint && text){var focus_v = $.trim($(this).val());if(focus_v === text){ $(this).val("");} } //键盘事件 $(this).keyup(function(e){s = v = $.trim($(this).val()); if(/@/.test(v)){ s = v.replace(/@.*/, "");}if(v.length > 0){ //如果按键是上下键 if(e.keyCode === 38){ //向上 if(index = newArr.length - 1){index = -1; } index++; }else if(e.keyCode === 13){ //回车 if(index > -1 && index -1 && index < newArr.length){//如果当前有激活列表x.css("left", "-6000px");} }}else{ x.css("left", "-6000px"); } }).blur(function(){if(hint && text){ var blur_v = $.trim($(this).val()); if(blur_v === ""){ $(this).val(text); }}$(this).css("color", bc).unbind("keyup").parent().css("z-index",0);x.css("left", "-6000px"); }); //鼠标经过列表项事件 //鼠标经过 $(".mailHover").live("mouseover", function(){index = Number($(this).attr("id").split("_")[1]); liveValue = $("#mailList_"+index).text();x.children("." + cf).removeClass(cf).addClass(cl);$(this).addClass(cf).removeClass(cl); });}); x.bind("mousedown", function(){ that.val(liveValue);}); }); }; })(jQuery);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。