校验电话号码自动生成标签
<template> <div> <!-- <label class="labelname">{{labelname}}</label> --> <div class="inputbox"> <div class="arrbox"> <div v-for="(item, index) in labelarr" :key="index" class="spanbox"> <span>{{ item }}</span> <i class="spanclose" @click="removeitem(index, item)"></i> </div> <input placeholder="输入后回车" size="5" v-model="currentval" @keyup.enter="addlabel" @mouseleave="addlabel" maxlength="11" class="input" type="text" /> </div> </div> <!-- 常用label展示 --> <div></div> </div> </template> <script> export default { name: "enterlabel", props: { parentarr: { type: Array, default() { return []; }, }, }, data() { return { currentval: "", labelarr: [], }; }, watch: { labelarr(old, cur) { this.$emit("on-change", this.labelarr); }, parentarr() { if (this.parentarr.length > 0) { this.labelarr = []; for (let i = 0; i < this.parentarr.length; i++) { this.labelarr.push(this.parentarr[i]); } } else { this.labelarr = []; } }, }, methods: { // 移除标签 removeitem(index, item) { this.labelarr.splice(index, 1); }, // input回车加入labelarr中 addlabel() { let count = this.labelarr.indexOf(this.currentval); var re =/^((\+|00)86)?((134\d{4})|((13[0-3|5-9]|14[1|5-9]|15[0-9]|16[2|5|6|7]|17[0-8]|18[0-9]|19[0-2|5-9])\d{8}))$/; let str = this.currentval; if (count === -1 && re.test(str)) { this.labelarr.push(this.currentval); } else{ this.$message.error("你输入的电话号码不正确") } this.currentval = ""; }, }, }; </script> <style> .inputbox { background-color: white; font-size: 12px; border: 1px solid #dcdee2; border-radius: 6px; margin-bottom: 18px; padding: 6px 1px 1px 6px; text-align: left; font-size: 0; margin-bottom: 0; } .input { font-size: 14px; border: none; box-shadow: none; outline: none; background-color: transparent; padding: 0; margin: 0; width: 200px; max-width: inherit; min-width: 80px; vertical-align: top; height: 30px; color: #34495e; margin: 2px; line-height: 30px; } .arrbox { border-radius: 6px; margin-bottom: 10px; padding: 6px 1px 1px 6px; text-align: left; font-size: 0; } .spanbox { line-height: 30px; margin: 2px; padding: 0 10px; background-color: #1abc9c; color: white; border-radius: 4px; font-size: 13px; cursor: pointer; display: inline-block; position: relative; vertical-align: middle; overflow: hidden; transition: 0.25s linear; } .spanbox:hover { padding: 0px 17px 0 3px; } .spanclose { color: white; padding: 0 10px 0 0; cursor: pointer; font-size: 12px; position: absolute; right: -3px; text-align: right; text-decoration: none; top: 0; width: 100%; bottom: 0; z-index: 2; opacity: 0; filter: "alpha(opacity=0)"; transition: opacity 0.25s linear; font-style: normal; } .spanbox:hover .spanclose { padding: 0 10px 5px 0; opacity: 1; -webkit-filter: none; filter: none; } .spanclose:after { content: "x"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; line-height: 27px; } </style>
效果图
当要一次性添加多个电话号码(粘贴复制)生成标签,可以参考下方代码改动。
addlabel() { let count = this.labelarr.indexOf(this.currentval); var re = /^((\+|00)86)?((134\d{4})|((13[0-3|5-9]|14[1|5-9]|15[0-9]|16[2|5|6|7]|17[0-8]|18[0-9]|19[0-2|5-9])\d{8}))$/; let str = this.currentval.replace(/\s*/g,""); // str.prototype.notempty = function(){ // return this.filter(t => t!=undefined && t!==null); // } console.log(str) for ( let i = 0; i < (str.length-1) ;){ if( count === -1 && re.test( str.slice(i,i+11))){ this.phoneData.push(str.slice(i,i+11)) for(let j = 0;j < ( this.phoneData.length-1) ;j++){ const Datas = [...new Set(this.phoneData)]; this.labelarr = Datas; } }else{ this.$message.error("你输入的电话号码不正确"); } i+=11 } console.log(this.labelarr) this.currentval = ""; },