var tagInput = {
isInited: false,
init: init,
bindEvent: bindEvent,
addTag: addTag,
removeTag: removeTag
};
tagInput.init();
function init() {
var that = this;
if (that.isInited) return;
that.isInited = true;
// 请修改这一行代码,保存class为js-input的输入框的dom元素引用
that.input = document.querySelector('.js-input');
that.bindEvent();
}
function bindEvent() {
var that = this;
var input = that.input;
if (!input) return;
input.addEventListener('keydown', function (event) {
// 请修改这一行代码,判断用户是否按了回车键
var isEnter = event.keyCode === 13;
// 请修改这一行代码,判断用户是否按了删除键
var isDelete = event.keyCode === 8;
(isEnter || isDelete) && event.preventDefault();
isEnter && that.addTag();
isDelete && that.removeTag();
});
input.parentNode.addEventListener('click', function () {
input.focus();
});
}
function addTag() {
const text = this.input.value.trim()
if(text === ''){
this.input.value = ''
return
}
const spans = this.input.parentNode.querySelectorAll('.tag')
const found = Array.from(spans).find(ele => ele.textContent === text)
if(found) {
this.input.value = ''
return
}
const span = document.createElement('span')
span.classList.add('tag')
span.innerHTML = text
this.input.parentNode.insertBefore(span, this.input)
this.input.value = ''
}
function removeTag() {
const text = this.input.value
if(text.length === 0 ){
const spans = this.input.parentNode.querySelectorAll('.tag')
if(spans.length > 0){
this.input.parentNode.removeChild(spans[spans.length - 1])
}
}
}