๋ฐ์ํ
์๋ ํ์ธ์, ์ด๋ฒ์๋ javaScript์์ input ํ๊ทธ์ enter ํค๊ฐ ๋๋ ธ์ ๋ ์ฒ๋ฆฌํ keydown ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๊ณผ, ์ค๋ณต ์ด๋ฒคํธ ๋ฐ์์ ๋ฐฉ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
html ์ฝ๋ :
<input type="text" id="todo_input" placeholder="insert title..">
js ์ฝ๋ :
$(function() {
// .... ์๋ต
var keydown = false; // ์ค๋ณต ๋ฐ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ณ์
const $input = document.getElementById('input-title'); // id๊ฐ์ผ๋ก htmlElement ์ฐพ๊ธฐ
// ํด๋น element์ addEventListener ์ถ๊ฐ
$input.addEventListener('keydown', function (e) {
if (keydown) return; // keydown์ ํ๋ค๋ฉด ์ข
๋ฃ.
else {
// key๊ฐ Enter์ด๊ณ , ๋น์นธ ์
๋ ฅ์ด ์๋ ๋ ์คํ!
if (e.key == 'Enter') {
keydown = true; // ์ํฐํค๊ฐ ๋๋ ธ๊ณ , ๋น์นธ ์ฒดํฌ๋ ์๋ฃํ์ ๋, true๋ก ๊ฐ์ ์ค์ ์ค๋ณต ์คํ ๋ฐฉ์ง!
$.ajax({
url: 'http://localhost:8080/title',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify({
title: $('#' + $input.id).val()
}),
success: function (result) {
console.log(result);
addTodo(result);
$('#input-title').val(''); // input ๊ณต๋ฐฑ์ผ๋ก ์ด๊ธฐ
keydown = false; // ๋ค์ keydown ๋ณ์ ์ด๊ธฐํ
}
});
}
}
});
//...
});
boolean ํ์ keydown ๋ณ์๋ฅผ ์ฌ์ฉํ๋๊ฒ ํต์ฌ์ ๋๋ค. keydown ๋ณ์๋ฅผ ์ค์ ํด์ฃผ์ง ์์ผ๋ฉด ์ค๋ณต ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค!
๋จผ์ keydown ๋ณ์๋ฅผ false๋ก ์ค์ ํด์ค ๋ค์, enterํค๋ฅผ ๋๋ ๋ค๋ฉด ๊ทธ๋! keydown ๋ณ์๋ฅผ true๊ฐ์ผ๋ก ์ค์ ํด์ค์ ์ถ๊ฐ๋ก ์ํฐํค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ฒญ์ ์ฒ๋ฆฌ ์๋ฃํ๋ค๋ฉด, ๋ค์ keydown ๋ณ์๋ฅผ false๋ก ์ด๊ธฐํ ํด์ฃผ์ ์ผ ํฉ๋๋ค!!
๊ทธ๋ผ ๋!
๋ฐ์ํ