ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ


๋‹ค์Œ๊ณผ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ฃผ์–ด์ ธ ์žˆ๊ณ  input์— ๋‚ด์šฉ์„ ์ž…๋ ฅํ•œ ๋’ค ์—”ํ„ฐํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž์— ์ƒˆ๋กœ์šด ํ‚ค์›Œ๋“œ ์•„์ดํ…œ์ด

์ถ”๊ฐ€๋˜๋„๋ก ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

keyup/keypress Event๋กœ ์ด๋ฒคํŠธ ๊ฐ์ง€

์—”ํ„ฐํ‚ค๊ฐ€ ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ input์˜ value ๊ฐ’์ด ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋˜๋„๋ก ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

this.inputElement.addEventListener('keypress', e => {
            let newItem = this.chipTemplate(e.target.value);

            if(e.keyCode === 13) {
                // ์ƒˆ๋กœ์šด ์•„์ดํ…œ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
            }
        })

์ฒ˜์Œ์—๋Š” keyup ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜์—ฌ ์ฃผ์—ˆ๋Š”๋ฐ value ๊ฐ’์ด ํ•œ๊ธ€์ผ ๊ฒฝ์šฐ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์ด ๋‘ ๋ฒˆ ์ค‘๋…๋˜์–ด ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

์ด์— ๋Œ€์‹ ์— keypress ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋กํ•˜์—ฌ ์ฃผ์—ˆ๊ณ  ์ •์ƒ์ ์œผ๋กœ ํ•œ๊ธ€ ๋˜ํ•œ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

 

์ด๋ฒคํŠธ์˜ ํ‚ค ์ฝ”๋“œ๊ฐ€ 13์ผ ๊ฒฝ์šฐ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•˜๋„๋ก ํ–ˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ 13์€ ํ‚ค๋ณด๋“œ์—์„œ ์—”ํ„ฐํ‚ค์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ์ด๋‹ค.

event.keyCode ๋Š” ASCII ์ฝ”๋“œ์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

 

insertAdjacentElement๋กœ ์š”์†Œ ์ถ”๊ฐ€

JS ์ƒ์—์„œ ๋™์ ์œผ๋กœ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“  ์•„์ดํ…œ ์š”์†Œ๋ฅผ ๋ฆฌ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ์˜ ๋งจ ์•ž์— ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด insertAdjacentElement๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

insertAdjacentElement์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž์—๋Š” ์š”์†Œ๋ฅผ ์–ด๋”” ์œ„์น˜์— ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ค„ ๊ฒƒ์ธ์ง€ ๋„ฃ์–ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.

  • beforebegin: targetElem ๊ทธ ์ž์ฒด ์ „์—
  • afterbegin: targetElem ์ฒซ ๋ฒˆ์งธ ์ž์‹ ์•ž์—
  • beforeend: ๋ง‰๋‚ด targetElem, ๋งˆ์ง€๋ง‰ ์ž์‹ ๋’ค
  • afterend: targetElem ์ž์ฒด ํ›„
if(e.keyCode === 13) {
                this.container.insertAdjacentElement('afterbegin', newItem);
                this.data.unshift(e.target.value);
                e.target.value = '';
            }
removeData(label) { //๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ ๊ธฐ๋Šฅ ๋ชจ๋“ˆํ™”
        let targetIndex = this.data.findIndex(item => item === label); 
        this.data.splice(targetIndex, 1);
    }

์ด๋•Œ ํ™”๋ฉด ์ƒ์—์„œ ๋žœ๋”๋ง๋˜๋Š” ๋ฆฌ์ŠคํŠธ(์ปดํฌ๋„ŒํŠธ)๋ง๊ณ ๋„ ๋ฆฌ์ŠคํŠธ๋˜์–ด ์žˆ๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ(state)์—๋„ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์˜ ์†Œ์Šค ์ฝ”๋“œ์™€ ๊ฐ™์ด unshift ์™€ findIndex ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์—ˆ๋‹ค.

unshift() ๋ฉ”์„œ๋“œ๋Š” ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ๋ฐฐ์—ด์˜ ๋งจ ์•ž์ชฝ์— ์ถ”๊ฐ€ํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
findIndex() ๋ฉ”์„œ๋“œ๋Š” ์ฃผ์–ด์ง„ ํŒ๋ณ„ ํ•จ์ˆ˜๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ์—†์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ