仿qq邮箱首页html,仿QQ邮箱收件人选择与搜索之简单js示例

之前因为项目开发需要,对于收件人选择与搜索的js实现,整理如下:

页面截图:

65f37cd9f531d7a330fbd90270362bd8.png

主要html代码:

To:

Subject:

Message:

'Search Contact...')this.value='';" οnblur="if(this.value=='')this.value='Search Contact...';"

name="txtsearch" />

  • ass="Cata food, S.L.">Cata food, S.L.

  • ass="Anqing Beverage">Anqing Beverage

  • ass="123456ew">123456ew

主要js实现代码:

$(function(){

//点击收件人列表到收件人

$(".firstmail").bind("click",function(){

var $mailTo=$(this).attr("ass");//收件人名称

var $mailToId=$(this).attr("alt");//收件人Id

var $divtxt_val=$("#divtxt").text();//收件人框中的值

var $messId=$("#messId").val();//隐藏的收件人Id

if($divtxt_val.indexOf($mailTo)<0){//若不存在,则拼接

$("#divtxt").append(""

+$mailTo+";"+"");

$messId=$messId+$mailToId+";";

}

$("#messId").val($messId);

$("#messName").val($("#divtxt").text());//隐藏的收件人名称

});

//点击某个收件人,添加样式

$(".rece").live("click",function(){

$("#divtxt").find(".rece").removeClass("on");

$("#divtxt").find(".rece").css("background-color","").css("color","")

$(this).addClass("on").css("background-color", "#545f59").css("color","#fff");

});

//点击删除键跟退格键,删除对应的收件人

$(document).bind('keydown',

function(event) {

var $messId=$("#messId").val();//收件人Id的值

var $span_alt=$("#divtxt .on").attr("alt");//选中的收件人

if($span_alt != null){

var $index,$span_size,$mess_size,$val;

$index=$messId.indexOf($span_alt);

$span_size=$span_alt.length;

$mess_size=$messId.length;

//删除对应的收件人Id

$val=$messId.substring(0,$index)

+$messId.substring($index+$span_size,$mess_size);

$("#messId").val($val);

if(46==event.keyCode ){ //Delete键

$("#divtxt .on").remove();

$("#messName").val($("#divtxt").text());

}else if(8==event.keyCode){//退格键

$("#divtxt .on").remove();

$("#messName").val($("#divtxt").text());

return false;

}

}

}

);

//搜索框搜索事件

$(".search_mail").bind("blur",function(){

var content = $(this).val();

if("Search Contact..." != content && content !=""){

$(".mailclist li div").each(function(){

var name = $(this).text();

if(name.indexOf(content) == -1){

$(this).hide();

}else{

$(this).show();

}

});

} else {

$(".mailclist li div").show();

}

});

});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现这个功能,可以采用以下步骤: 1. 在vue中使用`<textarea>`标签实现收件人输入框,监听其`input`事件,获取输入框中的文本。 2. 使用正则表达式匹配文本中的每个邮箱地址,并将它们存储在数组中。 3. 在模板中使用`v-for`指令渲染出每个邮箱地址的tag,并为每个tag设置单独的背景色。 4. 监听每个tag的`dblclick`事件,将其转换为可编辑状态。 5. 监听每个tag的`blur`事件,将其转换为不可编辑状态,并更新对应的邮箱地址。 下面是一个简单的实现代码示例: ```html <template> <div> <textarea ref="input" v-model="text" @input="handleInput"></textarea> <div class="tags"> <span v-for="(email, index) in emails" :key="index" :style="{ backgroundColor: colors[index % colors.length], cursor: 'pointer' }" @dblclick="editEmail(index)" :contenteditable="email.editable" @blur="updateEmail(index, $event.target.textContent)"> {{ email.address }} </span> </div> </div> </template> <script> export default { data() { return { text: '', emails: [], colors: ['#FFC107', '#2196F3', '#4CAF50', '#E91E63', '#9C27B0'] } }, methods: { handleInput() { const regex = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g; const matches = this.text.match(regex); if (matches) { this.emails = matches.map(address => ({ address, editable: false })); } else { this.emails = []; } }, editEmail(index) { this.emails[index].editable = true; this.$nextTick(() => { this.$refs.input.focus(); }); }, updateEmail(index, address) { this.emails[index].address = address; this.emails[index].editable = false; } } } </script> ``` 这里使用了一个正则表达式匹配文本中的邮箱地址,然后将匹配结果存储在`emails`数组中。在模板中,使用`v-for`指令渲染出每个邮箱地址的tag,并为每个tag设置单独的背景色。同时,监听每个tag的`dblclick`事件,将其转换为可编辑状态。在编辑完成后,监听tag的`blur`事件,将其转换为不可编辑状态,并更新对应的邮箱地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值