320x100
โ ์ด ํฌ์คํ ์ ๋ ธ๋ง๋์ฝ๋ - "๋ฐ๋๋ผ JS๋ก ํฌ๋กฌ ์ฑ ๋ง๋ค๊ธฐ๋ฅผ ๋ค์ผ๋ฉด์ ๊นํ๋ธ์ ๊ธฐ๋กํ ํ๊ธฐ๋ฅผ ์ฎ๊ธด ๋ด์ฉ์ ๋๋ค.
๐ ํจ์๋ ํธ์ถ๋ ๋ ํจ์ ์์ ์ ๋ณด๋ฅผ ๋ด์ ์ํ๋ก ์คํ๋์ด ์ฐ๋ฆฌ์๊ฒ ์ ๋ณด๋ฅผ ์ ๋ฌํด ์ค๋ค.
๐ฑ Input์ value
๐ ์ฌ์ฉ์๊ฐ Input์ ์ ๋ ฅํ ๊ฐ์ ๋ฐ์์ค๋ ๋ฐฉ๋ฒ์ ์์๋ณด์
- loginInput object์์ ํ์ธ ๊ฐ๋ฅํ property โ
→ value : ๊ธฐ๋ณธ์ ์ผ๋ก input์์ ์๋ ํ ์คํธ๋ฅผ ์๋ฏธ - ์์ ์ฝ๋
<!-- HTML ํ์ผ -->
<!-- ver1 -->
<div id="login-form">
<input type="text" placeholder="What is your name?">
<button>Log In</button>
</div>
<!-- ver2 -->
<form id="login-form">
<input
required maxlength="15"
type="text"
placeholder="What is your name?"
>
<input type="submit" value="Log in">
</form>
// JS ํ์ผ
// ver 1 - loginForm๋ html element๋๊น loginForm ์ด์ฉ
const loginForm = document.getElementById('login-form');
const loginInput = loginForm.querySelector('input');
const loginBtn = loginForm.querySelector('button');
// ver 2 - input๊ณผ button๋ง ๋ฐ๋ก ๊ฐ์ ธ์ค๊ธฐ
const loginInput = document.querySelector("#login-form input");
const loginBtn = document.querySelector("#login-form button");
function onLoginBtnClick() {
// input์ value๊ฐ์ ๋ณผ ์ ์์, ์
๋ ฅํ๋ฉด ๋ณด์
console.dir(loginInput.value);
console.log("click");
}
loginBtn.addEventListener("click", onLoginBtnClick)
๐ฑ Input value์ ์กฐ๊ฑด ๊ฑธ๊ธฐ
๐ user๊ฐ ์ ๋ ฅํ๋ ๊ฐ์ ์ ํจ์ฑ์ ํ์ธํ๋ ๋ฐฉ๋ฒ
- ์์ ์ฝ๋
function onLoginBtnClick() {
console.log('hello', loginInput.value);
/**
์ด๋ ๊ฒํ๋ฉด ๋ฌธ์ ๋ฐ์
→ value๊ฐ์ด ์์ ๋๋ hello ๋น์นธ์ด ๋์์ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ๋ช
ํํ๊ฒ
์ ์ ์๋ค.
*/
// ๋์ ๐ ์กฐ๊ฑด๋ฌธ ์ด์ฉํด์ ์ ์ฝ ๊ฑธ๊ธฐ
const username = loginInput.value;
if (username === "") {
alert("Please write your name");
}else if (username.length > 15) {
alert("Your name is too long.");
}
}
// ์ด ๋ฐฉ๋ฒ๋ ๊ด์ฐฎ๊ธฐ๋ ํ์ง๋ง ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข๋ค.
- ๊ฐ์ ๋ ๋ฐฉ๋ฒ
- input์์ ์กฐ๊ฑด์ ์
๋ ฅํ๊ธฐ
- required : input์ด ๋น์ด์๋ ๊ฐ์ด๋ฉด ์ ๋๋ค.
- maxlength : value์ ์ต๋๊ธธ์ด๋ฅผ ์ง์ .
- ์์ ์ฝ๋
<form id="login-form">
<input
required
maxlength="15"
type="text"
placeholder="What is your name?"
>
<input type="submit" value="Log in">
</form>
- ์์ง ์กด์ฌํ๋ ๋ฌธ์ ์ โ
- form์์ input์ด ์์ผ๋ฉด ์ ์ถ ๋ฒํผ์ ํด๋ฆญํ์ง ์๊ณ , Enter๋ง ๋๋ฌ๋ form ์์ฒด๊ฐ Submit ๋๋ค.
- ํ์ง๋ง Form์ด Submit ๋ ๋๋ง๋ค ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ ๋๊ณ , input์ ์ ํ value๊ฐ ์ฌ๋ผ์ง๋ค.๐ฑ
์ฆ, Form์ด ์ ์ถ๋ ๋ ํ์ด์ง๊ฐ reload ๋๋ ๊ฒ์ ๋ง๊ณ , value๋ฅผ ์ ์ฅํ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.๐ค
๐ฑ Event
๐ Form์ Submit event ์กฐ์ํ๊ธฐ
- ํ์ด์ง ์๋ก๊ณ ์นจ ๋ง๋ ๋ฐฉ๋ฒ
- browser๋ Form์์ Input์์ Enter๋ฅผ ๋๋ฅด๋ฉด ์๋ก๊ณ ์นจ + Form submit ํ๋๋ก ์ค์ ๋์ด ์๋ค.
- ์ด ๊ธฐ๋ณธ ๋์์ ๋ง์๋ณผ ๊ฒ์ด๋ค. → preventdefault() ์ฌ์ฉ
preventDefault() = ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๋์์ ๋ง์์ฃผ๋ ํจ์
- ํจ์๊ฐ ํธ์ถ๋ ๋ ์ผ์ด๋๋ ์ผ
- ์ด๋๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ ํจ์์ ( ) ์์ฑํ๋ฉด ๋ฐ๋ก ์คํํ๋ค๋ ์๋ฏธ๋ผ๋ ๊ฒ!
- ํ์ง๋ง ์ถ๊ฐ๋ก ์์์ผ ํ ๊ฐ๋
์ด ์๋ค.
- ์ ํํ๊ฒ ๋งํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ onLoginSubmit() ๋ง์ ํ๊ณ ์๋ ๊ฒ์ด ์๋๋ค!!
โจ ์ค์ ๋ก๋ ํจ์ ํธ์ถ → function(information) ํํ๋ก ์คํ โ ์ ๋ณด์ ๋ฌ์ด ๋์์ ์ด๋ฃจ์ด์ง๋ค.๐
- ์์ ์ฝ๋
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
/**
๋ธ๋ผ์ฐ์ ์ ์ด๋ค ๋ด์ฉ์ ์ฃผ๊ณ ๋ฐ๋์ง ์๊ธฐ ์ํด์
argument์ฃผ๊ณ preventDefault์ถ๊ฐ.
์ด๋ฆ์ด ๋ฌด์์ธ์ง๋ ์๊ด์์ - tomato ์ฌ์ฉ
*/
function onLoginSubmit(tomato) {
tomato.preventDefault() // '์๋ก๊ณ ์นจ'์ด๋ผ๋ ๊ธฐ๋ณธ๋์ ๋ง๊ธฐ
console.log(tomato);
}
loginForm.addEventListener('submit', onLoginSubmit);
- ๋ชจ๋ function์ ์ฒซ ๋ฒ์งธ argument๋ ํญ์ ์ง๊ธ ๋ง ๋ฒ์ด์ง ์ผ๋ค(event)์ ๋ํ ์ ๋ณด๊ฐ ๋๋ค.
๐ JS๊ฐ ๊ทธ ์ ๋ณด๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ค. - argument ๊ณต๊ฐ๋ง ์ ๊ณตํ๋ฉด JS๊ฐ ์์์ ๋ฐฉ๊ธ ์ผ์ด๋ event์ ์ ๋ณด๋ฅผ ์ง๋ argumenet๋ฅผ ์ฑ์ ๋ฃ๋๋ค
๐ ์ฐ๋ฆฌ๋ ๊ณต๊ฐ๋ง ์ ๊ณตํ๋ฉด ๋๋ค.
- console.dir(argument)๋ก ํ์ธ ๊ฐ๋ฅ
โจ์ค์ํ Point!
→ console์ ๋์ค๋ ์ ๋ณด๊ฐ ๋ฐฉ๊ธ ์คํ๋ event๋ผ๋ ์ !!
ex) ์ ๋ณด : submit์ ์ฃผ์ฒด๋? ๋์์? submit ๋ ์๊ฐ์?
- ๊ธฐ๋ณธ ๋ชจ์
function onLoginSubmit(event) {
event.preventDefault();
console.log(event);
}
- ๋ชจ๋ ๊ฐ๋ ์ ์ข ํฉํ ์์ ์ฝ๋
<!-- html ํ์ผ -->
<!-- ver 3 -->
<form id="login-form">
<input
required maxlength="15"
type="text"
placeholder="What is your name?"
>
<input type="submit" value="Log in">
</form>
<a href="https://nomadcoders.co">Go to courses</a>
// js ํ์ผ
// ๋งํฌ์ Form์ ๊ธฐ๋ณธ ๋์์ ๋ง๊ณ , ๊ทธ value๋ฅผ console.log()๋ก ๊ด์ฐฐํ๋ ๋ฐฉ๋ฒ.
const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
const link = document.querySelector("a");
function handleClick(event) {
event.preventDefault() console.dir(event);
// alert("clicked!");
}
function onLoginSubmit(event) {
event.preventDefault();
console.log(loginInput.value);
}
link.addEventListener("click", handleClick);
loginForm.addEventListener("submit",onLoginSubmit)
๋ฐ์ํ
'JavaScript > Nomad Coders' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] ๐ก Day 8 - JavaScript๋ก ํ์ด๋จธ ๋ง๋ค๊ธฐ (0) | 2022.04.16 |
---|---|
[TIL] ๐ก Day 7 - Javascript value getting, saving, loading ํ๋ ๋ฐฉ๋ฒ (0) | 2022.04.01 |
[ํ๊ธฐ] ๋ ธ๋ง๋์ฝ๋ ๋ฐ๋๋ผJS ์ฑ๋ฆฐ์ง 1์ฃผ์ผ ์ง๋ ์์ ํ๊ธฐ (0) | 2022.03.16 |
[TIL] ๐ก Day 5 - JS๋ฅผ ํตํด์ CSS๋ฅผ ์กฐ์ํ๋ ๋ฐฉ๋ฒ๋ค (0) | 2022.03.13 |
[TIL] ๐ก Day 4 - HTML๊ณผ JS ์ฐ๊ฒฐ, ์กฐ์ ๋ฐฉ๋ฒ (0) | 2022.03.13 |
๋๊ธ