-
邮箱后缀提示
2016-06-29 10:05:39邮箱后缀提示 -
邮箱后缀自动输入
2015-08-10 17:45:05邮箱后缀自动输入,当输入任意字符时,会自动出现下列表常用邮箱后缀,实用方便 -
各国邮箱后缀
2013-08-10 13:06:42各国邮箱后缀,外贸人员必了解。配合Google搜索可以找到一些客户的有限邮箱地址。 -
常用邮箱后缀总结,常用邮箱域名信息汇总
2020-11-10 18:01:27常用邮箱后缀总结 外国邮箱后缀分类总结如下: 美国常用邮箱后缀@netzero.net,@twcny.rr.com,@comcast.net,@warwick.net,@comcast.net,@cs.com,@verizon.net 德国常用邮箱后缀@t-online.de,@multi-industrie.de 法国...常用邮箱后缀总结
常用邮箱后缀
常用邮箱域名信息外国邮箱后缀分类总结如下:
美国常用邮箱后缀@netzero.net,@twcny.rr.com,@comcast.net,@warwick.net,@comcast.net,@cs.com,@verizon.net
德国常用邮箱后缀@t-online.de,@multi-industrie.de
法国常用邮箱后缀@wannado.fr,@mindspring.com,@excite.com,@club-internet.fr
日本常用邮箱后缀@yahoo.co.jp,@candel.co.jp
英国常用邮箱后缀@cwgsy.net,@btinternet.com,@sltnet.lk
印度常用邮箱后缀
@wilnetonline.net @cal3.vsnl.net.in @rediffmail.com @sancharnet.in @vsnl.com @del3.vsnl.net.in
新西兰常用邮箱后缀 @xtra.co.nz
俄罗斯常用邮箱后缀 @yandex.ru @mail.ru
德国常用邮箱后缀 @multi-industrie.de
香港常用邮箱后缀
@hongkong.com @ctimail.com @hknet.com @biznetvigator.com @netvigator.com @mail.hk.com @swe.com.hk @itccolp.com.hk
台湾省常用邮箱后缀 @seed.net.tw @topmarkeplg.com.tw @pchome.com.tw
新加坡常用邮箱后缀 @pacific.net.sg
以色列常用邮箱后缀@netvision.net.il;@candel.co.jp;@xx.org.il @zahav.net.il @fastmail.fm
赞比亚常用邮箱后缀 @zamnet.zm
阿根廷常用邮箱后缀 @amet.com.ar; @infovia.com.ar
马其顿常用邮箱后缀 @mt.net.mk
几内亚常用邮箱后缀@sotelgui.net.gn
墨西哥常用邮箱后缀@prodigy.net.mx
法国常用邮箱后缀 @wannado.fr @mindspring.com @excite.com @club-internet.fr
津巴布韦常用邮箱后缀@africaonline.co.zw;@samara.co.zw;@zol.co.zw;@mweb.co.zw
科特迪瓦常用邮箱后缀@aviso.ci;@africaonline.co.ci;@afnet.net
纳米比亚常用邮箱后缀@mti.gov.na;@namibnet.com;@iway.na;@be-local.com
尼泊尔常用邮箱后缀 @infoclub.com.np;@mos.com.np;@ntc.net.np
蒙古常用邮箱后缀 @mongol.net; magicnet.com @mail.mn
汤加常用邮箱后缀 @kalianet.to
阿塞拜疆常用邮箱后缀 @mail.ru
日本常用邮箱后缀 @yahoo.co.jp @candel.co.jp
阿曼常用邮箱后缀@omantel.net.om
南非常用邮箱后缀 @webmail.co.za @vodamail.co.za @iafrica.com
爱尔兰常用邮箱后缀 @indigo.ie @eircom.net
沙特阿拉伯常用邮箱后缀@nesma.net.sa
瑞典常用邮箱后缀 @caron.se
希腊常用邮箱后缀 @spark.net.gr @otenet.gr
泰国常用邮箱后缀 @ji-net.com @adsl.loxinfo.com
澳大利亚常用邮箱后缀 @bigpond.com @westnet.com.all @cairns.net.au @gionline.com.au @eunet.at
卡塔尔常用邮箱后缀 @qatar.net.qa
英国常用邮箱后缀 @cwgsy.net @btinternet.com @sltnet.lk
加拿大常用邮箱后缀 @mondis.com @sourcesexpert.com
马来西亚常用邮箱后缀 @tm.net.my
韩国常用邮箱后缀@hanmail.com/net @naver.com @daum.net(hanmail.net) @kornet.net @korea.com @naver.com @hanafos.com @yahoo.co.kr
巴基斯坦常用邮箱后缀 @cyber.net.pk @wilnetonline.net @cal3.vsnl.net.in @rediffmail.com @sancharnet.in @ndf.vsnl.net.in @del3.vsnl.net.in
阿拉伯联合酋长国常用邮箱后缀@emirates.net.ae
科威特常用邮箱后缀@qualitynet.net
越南常用邮箱后缀 @hn.vnn.vn @hcm.fpt.vn @hcm.vnn.vn
孟加拉常用邮箱后缀 @citechco.net
意大利常用邮箱后缀 @xxx.meh.es @terra.es @libero.it
科特迪瓦常用邮箱后缀 @aviso.ci @africaonline.co.ci @afnet.net
纳米比亚常用邮箱后缀 @mti.gov.na @namibnet.com @iway.na @be-local.com
阿塞拜疆常用邮箱后缀 @mail.ru
印尼常用邮箱后缀 @dnet.net.id
巴西常用邮箱后缀 @sinos.net
联合国常用邮箱后缀@sbcglobal.net @ntlworld.com
日耳曼常用邮箱后缀@tiscali.co.uk
奥地利常用邮箱后缀 @eunet.at
波兰常用邮箱后缀 @swiszcz.com @poczta.onet.pl
挪威常用邮箱后缀 @walla.com
埃及常用邮箱后缀 @rawagegypt.com第二波
@gmail.com @yahoo.com @msn.com @hotmail.com @aol.com @ask.com @live.com @qq.com @0355.net @163.com @163.net @263.net @3721.net @yeah.net @googlemail.com @mail.com 国外常用邮箱:@hotmail.com @msn.com @yahoo.com @gmail.com @aim.com @aol.com @mail.com @walla.com @inbox.com 国内常见邮箱:@126.com @163.com @sina.com @21cn.com @sohu.com @yahoo.com.cn @tom.com @qq.com @etang.com @eyou.com @56.com @x.cn @chinaren.com @sogou.com @citiz.com 国家或地区常用邮箱后缀:中国香港:@hongkong.com @ctimail.com @hknet.com @netvigator.com @mail.hk.com @swe.com.hk @ITCCOLP.COM.HK @BIZNETVIGATOR.COM 中国台湾:@SEED.NET.TW @TOPMARKEPLG.COM.TW
@PCHOME.COM.TW @***.hinet.net 巴基斯坦:@cyber.net.pk 阿曼:omantel.net.om 意大利:@libero.it 南非:@webmail.co.za 新西兰:@xtra.co.nz 新加坡:@pacific.net.sg @FASTMAIL.FM 阿联酋:@emirates.net.ae @eim.ae 叙利亚:@net.sy @scs-net.org @mail.sy 土耳其:@ttnet.net.tr @superonline.com 也门:@yemen.net.ye @y.net.ye 塞浦路斯:@cytanet.com.cy 美国:@aol.com @netzero.net @twcny.rr.com @comcast.net @warwick.net @comcast.net @cs.com @verizon.net 澳大利亚:@bigpond.com 希腊:@otenet.gr 巴基斯坦 : @cyber.net.pk
印度:@vsnl.com @wilnetonline.net @cal3.vsnl.net.in @rediffmail.com @sancharnet.in@NDF.VSNL.NET.IN @DEL3.VSNL.NET.IN 新西兰 : @xtra.co.nz 俄罗斯:@yandex.ru 德国:@t-online.de ¬ 以色列:@NETVISION.NET.IL 澳大利亚:@BIGPOND.NET.AU 俄罗斯:@MAIL.RU EV 泰国:@ADSL.LOXINFO.COM 叙利亚:@SCS-NET.ORG 阿拉伯联合酋长国:@EMIRATES.NET.AE 科威特:@QUALITYNET.NET 以色列:@ZAHAV.NET.IL @netvision.net.il @xx.org.il 越南:@hn.vnn.vn @hcm.fpt.vn @hcm.vnn.vn 日本@candel.co.jp 赞比亚:@zamnet.zm 阿根廷:@amet.com.ar@infovia.com.ar 马其顿:@mt.net.mk 几内亚:@sotelgui.net.gn 墨西哥:@prodigy.net.mx 孟加拉:@citechco.net 意大利:@xxx.meh.es @terra.es 法国:@wannado.fr @mindspring.com @excite.com 津巴布韦:@africaonline.co.zw @samara.co.zw @zol.co.zw @mweb.co.zw 科特迪瓦:@aviso.ci @africaonline.co.ci @afnet.net 纳米比亚:@mti.gov.na @namibnet.com @iway.na @be-local.com 尼泊尔:@infoclub.com.np
-
android AutoCompleteTextView邮箱后缀自动补全
2017-06-27 08:50:18可以自动补齐邮箱后缀的控件,很适合邮箱的注册于邮箱登录 -
输入文字自动加载邮箱后缀特效代码
2021-03-20 02:14:36输入文字自动加载邮箱后缀是一款自动加载提示邮箱效果的插件emailAutoComplete.js。 -
自动填充邮箱后缀
2012-08-01 16:16:50android,AutoComplete,邮箱后缀 -
各国域名邮箱后缀
2014-05-06 14:54:52各国域名邮箱后缀推荐版,可以在搜索客户的时候在百度添加进去,可搜到准确的客户! -
js 自动显示邮箱后缀列表
2014-03-17 14:44:53js 自动显示邮箱后缀列表 js 自动显示邮箱后缀列表 -
JS输入用户名自动显示邮箱后缀列表的方法
2020-10-24 19:40:56主要介绍了JS输入用户名自动显示邮箱后缀列表的方法,可实现自动显示邮箱后缀名列表的功能,非常具有实用价值,需要的朋友可以参考下 -
django form 验证邮箱后缀
2021-03-08 16:56:06同时我还想用form验证邮箱后缀是否为qq,如下图,但是就是不行,不是qq邮箱还是可以注册,怎么做邮箱后缀的验证?谢谢 <code>def clean_qq_email(self): email = self.... -
输入文字自动加载邮箱后缀.zip
2019-07-04 22:05:35输入文字自动加载邮箱后缀是一款自动加载提示邮箱效果的插件emailAutoComplete.js。 -
输入用户名自动显示邮箱后缀列表
2016-04-21 16:54:14输入邮箱时自动提示常用邮箱后缀列表 -
ios-UITextField邮箱后缀联想输入.zip
2019-07-11 19:45:25UITextField邮箱后缀联想输入 github地址: https://github.com/cheng534078182/TextMatchEmail -
JavaScript实现邮箱后缀提示功能的示例代码
2020-10-17 15:26:21主要介绍了JavaScript实现邮箱后缀提示功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
Android自动补全邮箱后缀的EditText
2016-05-04 15:28:38带删除按钮的且可以自动补全邮箱后缀的自定义EditText -
批量修改邮箱后缀名
2021-02-19 14:51:35今天工作中遇到一个问题,公司邮箱换后缀名,要批量改邮箱后缀名,特记录以下: 总的sql 如下: update staff set email=concat (substring(email,1,locate('@aaa.com',email)),'bbb.com') Where email LIKE '%@aaa-...今天工作中遇到一个问题,公司邮箱换后缀名,要批量改邮箱后缀名,特记录以下:
总的sql 如下:update staff set email=concat (substring(email,1,locate('@aaa.com',email)),'bbb.com') Where email LIKE '%@aaa-inc.com'
首先concat函数是一个拼接字符串的函数
substring函数是截取字符串的函数
1.substring(str,index,num) 从指定字符串(str) 截取指定的子串(从index开始截取num个字符)。
2.select substring(‘class_name’,2,5) ;//字符串的坐标从1开始执行结果为 ‘lass_’
2.locate(cstr,str,[position]) 查找子字符串(cstr)在字符串(str)中的坐标,可选参数position意为查找的起始位置
示例:
SELECT locate(‘s’,‘students_name’)SELECT locate(‘s’,‘students_name’,5)
第1条语句执行结果为:1
第2条语句执行结果为:8
查看重新拼写完的字段的值
select concat (substring(email,1,locate('@aaa.com',email)),'bbb.com') FROM staff Where email LIKE '%@aaa.com';
-
各国公共邮箱后缀名
2013-10-01 23:07:00给各位发福利啦,各国公共邮箱后缀名提供给大家,对于外贸物流等非常有帮助,便于识别客户国家。 -
JavaScript实现邮箱后缀提示功能
2018-12-13 13:00:08JavaScript实现邮箱后缀提示功能 先来个基础的 需求 根据下面需求实现如示意图所示的邮箱输入提示功能,注意,根据要求只需实现下面功能 当用户没有任何输入时,提示框消失 当用户输入字符后,显示提示框,并且...JavaScript实现邮箱后缀提示功能
先来个基础的
需求
根据下面需求实现如示意图所示的邮箱输入提示功能,注意,根据要求只需实现下面功能
- 当用户没有任何输入时,提示框消失
- 当用户输入字符后,显示提示框,并且把用户输入的内容自动拼上邮箱后缀进行显示
- 暂时不用考虑示意图中的红色和蓝色背景色的逻辑
- 注意用户输入中前后空格需要去除
小优化编码
需求
如果我们输入的是 abc@1,这个时候出现的提示框内容是
- abc@1@163.com
- abc@1@gmail.com
- abc@1@126.com
……
很明显,上面的提示框不是一个符合用户需求的提示,我们需要做一些优化:
-
- 当用户输入含有 @ 符号时,我们选取用户输入的@前面的字符来和后缀拼接
需求
这下出现的提示好多了,不过用户如果已经输入了@1,说明他大概率要输入163或者126,我们需要让我们的提示更加符合用户的期望。满足以下需求:
- 当用户输入了 @ 及部分后缀时,只从 postfixList 选取符合用户输入预期的后缀,我们以前缀匹配为要求。
- 当用户输入不满足任何前缀匹配时,则显示全部提示
测试用例
- 输入a@1->出现提示框,提示a@163.com, a@126.com
- 输入a@g->出现提示框,提示a@gmail.com
- 输入a@2->出现提示框,提示a@263.net
- 输入a@qq->出现提示框,提示a@qq.com
- 输入a@163.->出现提示框,提示a@163.com
- 输入a@126.com->出现提示框,提示a@126.com
- 输入a@qq.com (两个空格)->出现提示框,提示a@qq.com
- 输入a@qq.comm->出现提示框,出现全部提示
代码1
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8" /> 6 <title>邮箱后缀提示1-完成基本提示</title> 7 8 </head> 9 10 <body> 11 <div class="wrapper"> 12 <input type="text" id="input-email"> 13 <ul class="email-sug" id="email-sug-wrapper"> 14 15 </ul> 16 </div> 17 <script> 18 var postfixList = ["163.com", "gmail.com", "126.com", "qq.com", "263.net"]; 19 var txt = document.getElementById("input-email"); 20 var sug = document.getElementById("email-sug-wrapper"); 21 22 // keys.addEventListener("keyup",function(){ 23 // console.log("event handle1"); 24 // }) 25 // keys.addEventListener("keypress",function(){ 26 // console.log("event handle2"); 27 // }) 28 // keys.addEventListener("keydown",function(){ 29 // console.log("event handle3"); 30 // }) 31 // keys.addEventListener("input",function(){ 32 // console.log("event handle4"); 33 // }) 34 35 //经过查看各个效果,oninput效果最符合需求。 36 txt.oninput = function () { 37 console.log("event handle4"); 38 judge(); 39 add(); 40 41 } 42 function getText() { 43 var inputText = txt.value.trim(); 44 return inputText; 45 } 46 //判断是否生成新的数组 47 function postlist() { 48 var userinput = getText(); 49 var newpostlist = new Array(); 50 if (userinput.search('@') != 0) { 51 var len = userinput.search('@'); 52 //用来拼接的用户输入内容 = 只使用@之后的字符串 53 var x = userinput.substring(len + 1, userinput.length); //取@之后的部分 54 for (var i = 0; i < postfixList.length; i++) { 55 if (postfixList[i].search(x) == 0) { 56 newpostlist.push(postfixList[i]); 57 } 58 } 59 //若@后面没有字符或者新数组newpostlist为空,就返回原来的postfixlist 60 if (x === '' || newpostlist == '') { 61 return postfixList; 62 } 63 return newpostlist; 64 } else { 65 return postfixList; 66 } 67 } 68 //根据输入内容和匹配来生成提示数组 69 function promptContent() { 70 var x = getText(); 71 var tips = new Array(); 72 if (x.indexOf("@") != -1) { 73 var p = x.slice(0, x.indexOf("@")); 74 for (i = 0; i < postlist().length; i++) { 75 tips[i] = p + "@" + postlist()[i]; 76 } 77 } else { 78 for (i = 0; i < postfixList.length; i++) { 79 tips[i] = x + "@" + postfixList[i]; 80 } 81 } 82 return tips; 83 } 84 //添加提示数组进入li 85 function add() { 86 var sug = document.getElementById("email-sug-wrapper"); 87 var tips = promptContent(); 88 while (sug.hasChildNodes()) { 89 sug.removeChild(sug.firstChild); 90 } 91 //将之前的列表清除掉,然后重新生成新的列表 92 for (i = 0; i < tips.length; i++) { 93 var tip_li = document.createElement("li"); 94 tip_li.innerHTML = tips[i]; 95 sug.appendChild(tip_li); 96 } 97 } 98 99 function judge() { 100 //判空,是“”没有内容,不能为“ ” 101 if (getText() == "") { 102 hide(); 103 } else { 104 display(); 105 } 106 107 } 108 109 function hide() { 110 sug.style.display = "none"; 111 } 112 113 function display() { 114 sug.style.display = "block"; 115 } 116 </script> 117 </body> 118 119 </html>
新的需求编码
需求
上面我们只完成了提示,但提示还没有直接作用到选择中,我们现在完成以下需求:
- 使用CSS实现:鼠标滑过提示框的某一个提示时,这个提示内容背景色变化,表示鼠标经过了这个DOM节点
- 鼠标如果点击某个提示,则提示内容进入输入框,同时提示框消失
- 在上个步骤结束后,在输入框中任意再输入字符或删除字符,则重新开始出现提示框
需求
尝试在输入框中输入<b>,看看提示框发生了什么
阅读
设计
我们需要在两个地方进行处理,一个是在生成提示内容那里,对于特殊字符进行转义编码,另一个是在把鼠标点击的提示框内容转回输入框时进行解码。
代码2
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>邮箱后缀提示2-添加样式和监听鼠标点击和转码内容</title> <style> #input-email{ width: 300px; height: 30px; } .email-sug{ width: 300px; list-style: none; padding: 0px; margin: 0px; border: 2px solid rgba(134, 132, 132,0.3); border-top:none; display: none; /* 初始不显示,避免边框出现 */ } .email-sug li{ width: 300px; height: 30px; background-color: #ffffff; color: darkgrey; line-height: 30px; } .email-sug li:hover{ background-color:pink; } </style> </head> <body> <div class="wrapper"> <input type="text" id="input-email"> <ul class="email-sug" id="email-sug-wrapper"> </ul> </div> <script> var postfixList = ["163.com", "gmail.com", "126.com", "qq.com", "263.net"]; var txt = document.getElementById("input-email"); var sug = document.getElementById("email-sug-wrapper"); sug.addEventListener("click",function(ev){ //采用事件代理,监听父级点击事件,通过target获取当前li var ev=ev||window.event; var target=ev.target||ev.srcElement; if(target.nodeName.toLowerCase()=="li"){ hide(); return txt.value=htmlDecode( target.innerHTML); //解码 //return txt.value= target.innerHTML; } }) txt.oninput = function () { console.log("event handle4"); judge(); add(); } function getText() { var inputText = txt.value.trim(); return inputText; } //判断是否生成新的数组 function postlist() { var userinput = getText(); var newpostlist = new Array(); if (userinput.search('@') != 0) { var len = userinput.search('@'); //用来拼接的用户输入内容 = 只使用@之后的字符串 var x = userinput.substring(len + 1, userinput.length); //取@之后的部分 for (var i = 0; i < postfixList.length; i++) { if (postfixList[i].search(x) == 0) { newpostlist.push(postfixList[i]); } } //若@后面没有字符或者新数组newpostlist为空,就返回原来的postfixlist if (x === '' || newpostlist == '') { return postfixList; } return newpostlist; } else { return postfixList; } } //根据输入内容和匹配来生成提示数组 function promptContent() { var x = htmlEncode(getText()) //转码; // var x=getText(); var tips = new Array(); if (x.indexOf("@") != -1) { var p = x.slice(0, x.indexOf("@")); for (i = 0; i < postlist().length; i++) { tips[i] = p + "@" + postlist()[i]; } } else { for (i = 0; i < postfixList.length; i++) { tips[i] = x + "@" + postfixList[i]; } } return tips; } //添加提示数组进入li function add() { var sug = document.getElementById("email-sug-wrapper"); var tips = promptContent(); while (sug.hasChildNodes()) { sug.removeChild(sug.firstChild); } //将之前的列表清除掉,然后重新生成新的列表 for (i = 0; i < tips.length; i++) { var tip_li = document.createElement("li"); tip_li.innerHTML = tips[i]; sug.appendChild(tip_li); } } function judge() { //判空,是“”没有内容,不能为“ ” if (getText() == "") { hide(); } else { display(); } } function hide() { sug.style.display = "none"; } function display() { sug.style.display = "block"; } /*1.用浏览器内部转换器实现html转码*/ function htmlEncode(html){ //1.首先动态创建一个容器标签元素,如DIV var temp = document.createElement ("div"); //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持) (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html); //3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了 var output = temp.innerHTML; temp = null; return output; } /*2.用浏览器内部转换器实现html解码*/ function htmlDecode(text){ //1.首先动态创建一个容器标签元素,如DIV var temp = document.createElement("div"); //2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持) temp.innerHTML = text; //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。 var output = temp.innerText || temp.textContent; temp = null; return output; } </script> </body> </html>
加上键盘
需求
我们给提示框加上3个按键的功能,分别是回车和上下键,使得可以通过键盘操作进行提示框的选择
- 当有提示框的时候,默认第一个提示为被选择状态,用一个和鼠标滑过不一样的背景色来标识
- 当有输入框的时候,按上键,可以向上移动选择状态,如果按键之前的被选择提示是第一个,则被选状态移到最下面一个
- 当有输入框的时候,按下键,可以向下移动选择状态,如果按键之前的被选择提示是最后一个,则被选状态移到第一个
- 当有输入框时,按回车键,则将当前被选中状态的提示内容,放到输入框中,并隐藏提示框
- 当没有输入框的时候,这3个键盘按键无响应
- 当用户输入发生改变的时候,选择状态都重新切回到第一个提示
优化体验
需求
当我们进入页面,或者当我们点击鼠标进行提示选择后,输入框的焦点就不在了,所以请你优化一下用户体验:
- 一进入页面就将焦点放在输入框中
- 用户点击鼠标,进行提示选择后,焦点依然在输入框中
- 用户按ESC键的时候,对用户输入进行全选
代码3
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8" /> 6 <title>邮箱后缀提示3-添加键盘响应及输入框焦点优化</title> 7 <style> 8 #input-email{ 9 width: 300px; 10 height: 30px; 11 } 12 .email-sug{ 13 width: 300px; 14 list-style: none; 15 padding: 0px; 16 margin: 0px; 17 border: 2px solid rgba(134, 132, 132,0.3); 18 border-top:none; 19 display: none; 20 /* 初始不显示,避免边框出现 */ 21 } 22 .email-sug li{ 23 width: 300px; 24 height: 30px; 25 background-color: #ffffff; 26 color: darkgrey; 27 line-height: 30px; 28 overflow: hidden; 29 padding-left: 10px; 30 box-sizing: border-box; 31 } 32 .email-sug li:hover{ 33 background-color:skyblue; 34 } 35 .email-sug li.active{ 36 background-color:pink; 37 } 38 </style> 39 </head> 40 41 <body> 42 <div class="wrapper"> 43 <input type="text" id="input-email" autofocus="autofocus"> 44 <ul class="email-sug" id="email-sug-wrapper"> 45 46 </ul> 47 </div> 48 <script> 49 var postfixList = ["163.com", "gmail.com", "126.com", "qq.com", "263.net"]; 50 var txt = document.getElementById("input-email"); 51 var sug = document.getElementById("email-sug-wrapper"); 52 var nowSelectTipIndex = 0; 53 54 //获取输入文本 55 txt.oninput = function (e) { 56 console.log("event handle4"); 57 //按下的是内容,则重置选中状态,坐标清零,避免光标位置已经计算存入。 58 if (!(e.keyCode == 40 || e.keyCode == 38 || e.keyCode == 13)) { 59 nowSelectTipIndex = 0; 60 } 61 judge(); 62 add(); 63 } 64 //点击事件响应 65 sug.addEventListener("click", function (ev) { 66 //采用事件代理,监听父级点击事件,通过target获取当前li 67 var ev = ev || window.event; 68 var target = ev.target || ev.srcElement; 69 if (target.nodeName.toLowerCase() == "li") { 70 hide(); 71 txt.focus(); //写在return之前,不然无效 72 return txt.value = htmlDecode(target.innerHTML); //解码 73 //return txt.value= target.innerHTML; 74 } 75 }) 76 //键盘事件响应 77 document.addEventListener("keydown", function (e) { 78 var e = e || window.event; 79 var key = e.which || e.keyCode; 80 var list = document.getElementsByTagName("li"); 81 //向下键 82 if (key == 40) { 83 for (i = 0; i < list.length; i++) { 84 list[i].setAttribute("class", ""); 85 } 86 nowSelectTipIndex++; 87 if (nowSelectTipIndex + 1 > list.length) { 88 nowSelectTipIndex = 0; 89 } 90 list[nowSelectTipIndex].setAttribute("class", "active"); 91 } 92 //向上键 93 if (key == 38) { 94 for (i = 0; i < list.length; i++) { 95 list[i].setAttribute("class", ""); 96 } 97 nowSelectTipIndex--; 98 if (nowSelectTipIndex < 0) { 99 nowSelectTipIndex = list.length - 1; 100 } 101 list[nowSelectTipIndex].setAttribute("class", "active"); 102 } 103 //回车键 104 if (key == 13) { 105 var x = document.getElementsByClassName("active"); 106 txt.value = htmlDecode(x[0].innerHTML); //用textcontent会去除html标签例如<b>。。 107 hide(); 108 } 109 if (key == 27) { 110 txt.setSelectionRange(0, -1); //ESC全选上文本框内容 111 hide(); 112 } 113 114 }) 115 //获取输入内容,并去除首尾空格 116 function getText() { 117 var inputText = txt.value.trim(); 118 return inputText; 119 } 120 //判断是否生成新的数组 121 function postlist() { 122 var userinput = getText(); 123 var newpostlist = new Array(); 124 if (userinput.search('@') != 0) { 125 var len = userinput.search('@'); 126 //用来拼接的用户输入内容 = 只使用@之后的字符串 127 var x = userinput.substring(len + 1, userinput.length); //取@之后的部分 128 for (var i = 0; i < postfixList.length; i++) { 129 if (postfixList[i].search(x) == 0) { 130 newpostlist.push(postfixList[i]); 131 } 132 } 133 //若@后面没有字符或者新数组newpostlist为空,就返回原来的postfixlist 134 if (x === '' || newpostlist == '') { 135 return postfixList; 136 } 137 return newpostlist; 138 } else { 139 return postfixList; 140 } 141 } 142 //根据输入内容和匹配来生成提示数组 143 function promptContent() { 144 var x = htmlEncode(getText()); //转码; 145 // var x=getText(); 146 var tips = new Array(); 147 if (x.indexOf("@") != -1) { 148 var p = x.slice(0, x.indexOf("@")); 149 for (i = 0; i < postlist().length; i++) { 150 tips[i] = p + "@" + postlist()[i]; 151 } 152 } else { 153 for (i = 0; i < postfixList.length; i++) { 154 tips[i] = x + "@" + postfixList[i]; 155 } 156 } 157 return tips; 158 } 159 //添加提示数组进入li 160 function add() { 161 var sug = document.getElementById("email-sug-wrapper"); 162 var tips = promptContent(); 163 while (sug.hasChildNodes()) { 164 sug.removeChild(sug.firstChild); 165 } 166 //将之前的列表清除掉,然后重新生成新的列表 167 for (i = 0; i < tips.length; i++) { 168 var tip_li = document.createElement("li"); 169 tip_li.innerHTML = tips[i]; 170 sug.appendChild(tip_li); 171 } 172 //初始选择第一项为选中状态,加类名变粉色(需要生成li之后再调用)。 173 var list = document.getElementsByTagName("li"); 174 list[0].setAttribute("class", "active"); 175 } 176 177 function judge() { 178 //判空,是“”没有内容,不能为“ ” 179 if (getText() == "") { 180 hide(); 181 } else { 182 display(); 183 } 184 185 } 186 //控制提示列表隐藏 187 function hide() { 188 sug.style.display = "none"; 189 } 190 //控制提示列表显示 191 function display() { 192 sug.style.display = "block"; 193 } 194 195 /*1.用浏览器内部转换器实现html转码*/ 196 function htmlEncode(html) { 197 //1.首先动态创建一个容器标签元素,如DIV 198 var temp = document.createElement("div"); 199 //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持) 200 (temp.textContent != undefined) ? (temp.textContent = html) : (temp.innerText = html); 201 //3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了 202 var output = temp.innerHTML; 203 temp = null; 204 return output; 205 } 206 /*2.用浏览器内部转换器实现html解码*/ 207 function htmlDecode(text) { 208 //1.首先动态创建一个容器标签元素,如DIV 209 var temp = document.createElement("div"); 210 //2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持) 211 temp.innerHTML = text; 212 //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。 213 var output = temp.innerText || temp.textContent; 214 temp = null; 215 return output; 216 } 217 </script> 218 </body> 219 220 </html>
最终效果如图:
-
安卓textView相关-androidAutoCompleteTextView邮箱后缀自动补全.rar
2019-07-29 16:57:52android AutoCompleteTextView邮箱后缀自动补全.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。 -
输入框自动提醒 邮箱后缀自动加载 下拉文本框
2014-06-10 19:42:54输入框自动提醒 邮箱后缀自动加载 下拉文本框 -
excel中如何自动添加邮箱后缀
2019-08-28 16:22:17excel在空白地方只输入字母,如何自动添加邮箱后缀。比如输入ttt, 单元格,自动就显示:ttt@163.com 另外:@就是表示输入的字符串,如果在想在@的前后默认都想添加内容,可以如下示范: ”ttt“@, 输入111,...excel在空白地方只输入字母,如何自动添加邮箱后缀。比如输入ttt, 单元格,自动就显示:ttt@163.com
另外:@就是表示输入的字符串,如果在想在@的前后默认都想添加内容,可以如下示范:
”ttt“@, 输入111,则:ttt111
"ttt"@"ccc",输入111,则:ttt111ccc
@"ttt",输入111,则:111ttt
-
jquery仿邮箱文本输入框自动加载邮箱后缀
2014-11-18 21:52:00jquery仿邮箱文本输入框自动加载邮箱后缀 在像百度这样的网站注册时,你会看到输入邮箱会出现自动给用户输入补全主流邮箱。这种对于增加用户体验的小例子已司空见惯。正好看到人家写的这种js功能。还... -
android 自定义控件之AutoCompleteTextView邮箱后缀自动补全
2019-07-09 17:25:01因为项目需要,要写一个邮箱自动补全的EditText,今天自定义一个控件,可以自动补齐邮箱后缀。先来看下效果: 由于原有的AutoCompleteTextView只是按照相同的字符串匹配,所以这里要自定义AutoCompleteTextView,... -
修改微擎、微信公众号默认粉丝邮箱后缀
2019-06-29 15:46:51然后用下面的方法建立sql_attr_multi属性字段: ...微赞的默认粉丝邮箱后缀为 @012wz.com 打开根目录 api.php,查找: 'email' => md5($message['from']).'@012wz.com' 修改 012wz.com 为...