自动匹配技术:简单的来说就是“根据用户输入的信息来提示一些相似项供用户选择”。具有很广泛的应用,比如我们最常用的百度,当输入一些搜索内容后会自动匹配很多相关信息;再比如我们最常用的输入法,都是使用这种技术,当然这些都比较难了。下面这个例子是比较简单的我们常用邮箱的匹配。代码如下:
1.css代码
#match_email
{
margin-left:48px;
overflow:auto;
display:none;
width:200px;
border:1px solid #aaa;
background:#fff;
max-height:100px;
line-height:20px;
}
#match_email div
{
text-decoration:none;
color:#000;
width:200px;
}
#match_email div:hover
{
background:#aaa;
}
input
{
height:20px;
width:200px;
}
在css中将overflow设为auto以及将max-height设为100px表示,在该div高度超多100px就是自动生成滚动条。
2.html代码
<div> 邮箱:<input type="text" name="email" id="email" autocomplete="off" onkeyup="match_mail(this.value)"/> <div id="match_email"></div> </div>
onkeyup时间表示只要手指离开按钮就会触发
3.js代码
<script>
//mailBoxs里存储用来匹配的串
var mailBoxs = "@163.com @126.com @129.com"
mailBoxs += " @qq.com @vip.qq.com @foxmail.com @live.cn @hotmail.com @sina.com @sina.cn @vip.sina.com";
var matchmail = document.getElementById("match_email");
var email = document.getElementById("email");
function match_mail(keyword)
{
matchmail.innerHTML = "";
matchmail.style.display = "none";
if (!keyword)
return;
if (!keyword.match(/^[\w\.\-]+@\w*[\.]"[^ ]* ","gm"));
if (matchs)
{
matchs = matchs.join("").replace(/ $/,"").split(" ");
matchmail.style.display = "block";
for (var i = 0; i < matchs.length; i++)
{
matchmail.innerHTML += '<div>'+matchs[i]+'</div>';
}
}
}
//点击除了匹配框之外的任何地方,匹配框消失
document.onclick = function(e)
{
var target = e.target;
if (target.id != "matchmail")
matchmail.style.display = "none";
}
//将匹配框上鼠标所点的字符放入输入框
matchmail.onclick = function(e)
{
var target = e.target;
email.value = email.value.replace(/@.*/,target.innerHTML);
}
</script>
在js中好几处都用到了正则表达式:
(1)keyword = keyword.match(/@\w*[\.]"color: #800000">);只获取@后面的内容,包括@;
(2)var matchs = mailBoxs.match(new RegExp(keyword+"[^ ]* ","gm"));进行匹配,把mailBoxs中和keyword匹配的存入matchs中,[^ ]* 指遇到空格不匹配,参数”gm”中'g'指进行全局匹配,'m'指多行匹配;
(3)matchs = matchs.join("").replace(/ $/,"").split(" ");字符串的结尾用空格匹配,$表示字符串的结尾。
在两个匿名函数中,e是在鼠标点击事件发生时系统自动生成的·,e.target是获得鼠标所点的当前对象。
最终效果如图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
js,邮箱地址,自动匹配
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]
