반응형
서론
사용자가 엑셀로 관리하고 있는 이메일 목록을 복사 & 붙여넣기 하여 수신자 목록을 적용하려고 한다. 그 기능을 적
소스
html
<template>
<div class="text-center">
<input type="textArea" />
<v-col cols="12" md="6">
<v-textarea
solo
name="input-7-4"
v-model="inputEmail"
label="이메일을 입력해주세요."
></v-textarea>
</v-col>
<v-btn :disabled="inputEmail === ''" @click="addEamil">추가 ↓</v-btn>
<v-col cols="12" md="6">
<div v-for="(item, index) in addEamilList" :key="index">
{{ index }} {{ item }}
</div>
</v-col>
</div>
</template>
설명
textArea : 입력 폼으로 v-model="inputEmail" 을 이용하여 데이터 제어
button : inputEmail 데이터 유무로 disabled 제어하고 click시 addEamil 메소드 호출
div : addEmailList 데이터 기준으로 추가된 데이터를 노출
script
<script>
import _ from "lodash";
export default {
data() {
return {
inputEmail: "",
addEamilList: [],
};
},
methods: {
// 엔터 치환
replaceEnter(val, replaceVal) {
return val.replace(/(\r\n|\n|\r)/gm, _.isNil(replaceVal) ? "/" : replaceVal);
},
// 이메일 체크
emailCheckFlag(val) {
// eslint-disable-next-line no-useless-escape
const reg = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
return reg.test(val);
},
addEamil() {
const emailList = this.replaceEnter(this.inputEmail).split("/");
for (let data of emailList) {
// 이메일 체크 & 중복 체크
if (this.emailCheckFlag(data) &&!this.addEamilList.some((item) => item === data)) {
this.addEamilList.push(data);
}
}
this.inputEmail = "";
},
},
};
</script>
설명
메소드
replaceEnter : 엔터값을 정규식을 이용해 치환한 메소드로 치환값이 있다면 해당 값으로 치환하고 없다면 '/' 으로 치환한다.
emailCheckFlag : 전달값을 이메일 체크하여 true / false return
addEamil : textArea에 등록한 inputEmail 데이터를 기반으로
1. 입력한 데이터를 치환하고 '/' 을 기반으로 split 하여 배열 변환
2. 배열을 반복문
3. 이메일 체크 & 중복 체크하여 addEamilList 에 push한다
확인
반응형
'개발 > Javascript' 카테고리의 다른 글
[JAVASCRIPT] 자주 사용하는 date method 정리 (0) | 2024.03.25 |
---|---|
[javascript] axios get통신 시 params 붙여서 set 하기 (0) | 2023.11.07 |
[JAVASCRIPT] recude 반복 중지 break 하기 (0) | 2023.07.10 |
[javascript] push() vs .push().apply() vs concat() (0) | 2023.02.27 |
[javascript] 기준 object 변경 없이 조회한 object 데이터만 set 하기 (0) | 2023.02.24 |