form ๊ด๋ จ ์์๋ค์ ๋์ ์ธ ์น ํ์ด์ง์ธ
๋ก๊ทธ์ธ, ํ์๊ฐ์
๋ฑ์ ๋ง๋ค๊ธฐ ์ํด ๊ผญ ํ์ํ ์์๋ค์ด๋ค.
ํผ์์ ์
๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ๋ฌํด์ ์ฒ๋ฆฌํ๋๋ก ๋ง๋ค์ด์ค๋ค.
โ๏ธ mini์ ๋ฆฌ
โ formํ๊ทธ๋ ์
๋ ฅ ์์ ์ ์ฒด๋ฅผ ๊ฐ์ธ๋ ํ๊ทธ์ด๋ค.
โ form์ ์ปจํธ๋กค ์์(control element)๋ก ๊ตฌ์ฑ๋๋ค.
โ๏ธ์ฐธ๊ณ 1) form ํ๊ทธ ์ฌ์ด์๋ ๋ค๋ฅธ form ํ๊ทธ๊ฐ ์ฝ์
์ด ์๋๋ค.
โ๏ธ์ฐธ๊ณ 2) form ํ๊ทธ์ ์ด๋ฆ ์์ฑ์ ํ ํ์ด์ง์์ ์ค๋ณตํ์ฌ ์ฌ์ฉํ๋ฉด ์ ๋๋ค.
โ๏ธ์ฐธ๊ณ 3) CSS์์๋ form ํ๊ทธ ํฐํธ๊ฐ ์ ์ฉ๋์ง ์์ผ๋ฏ๋ก ๋ฐ๋ก font๋ฅผ ์ ์ฉํด์ค์ผ ํ๋ค.
action
: ํผ์ ์ ์กํ ์๋ฒ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์ง์ ํ๋ค.
method
: ํผ์ ์ ์กํ ๋ฐฉ์์ผ๋ก 'post' / 'get' ๋ ๊ฐ์ง๊ฐ ์๋ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย post
: ์
๋ ฅ ๋ด์ฉ์ ๊ธธ์ด์ ์ ํ X, ์์ฃผ ์ฌ์ฉ
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย get
: ์์ ๋ฐ์ดํฐ๋ฅผ action url๊ณผ ?๊ตฌ๋ถ์ ๋ค์ ์ด์ด ๋ถ์ฌ์ ์ ๊ณตํ๋ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ๊ทธ๋์ ๋ณด์์ ์ทจ์ฝํ๋ค. ์ฃผ๋ก ํค์๋ ๊ฒ์ํ ๋ ์ฌ์ฉํ๋ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย (256~4096 byte๊น์ง๋ง ์ ์ก ๊ฐ๋ฅ)
name
: ํ๋์ ์น ๋ฌธ์์์ ์ฌ๋ฌ ๊ฐ์ ํผ์ด ์์ ์ ์์ผ๋ฏ๋ก ํผ์ ์๋ณํ๊ธฐ์ํด ์ด๋ฆ์ ์ง์ ํ๋ค.
autocomplete
: ํผ ๋ด๋ถ ์์์ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ง(on) ์ํ ์ง(off) ๊ฒฐ์ ํ๋ค.
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย on์ ๋ช
์ํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ฌ์ฉ์๊ฐ ์ด์ ์ ์
๋ ฅํ๋ ๊ฐ๋ค์ ๊ธฐ๋ฐ์ผ๋ก
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๊ฐ๊ณผ ๋น์ทํ ๊ฐ๋ค์ ๋๋กญ๋ค์ด ์ต์
์ผ๋ก ๋ณด์ฌ์ค๋ค.
target
: ์คํฌ๋ฆฝํธ ํ์ผ์ ํ์ฌ์ ์ฐฝ์ด ์๋ ๋ค๋ฅธ ์์น์์ ์ด๋ฆฌ๋๋ก ์ง์ ํ ์ ์๋ค.
onsubmit
: action ์์ฑ์ ํ์ฉํ์ง์๊ณ , onsubmit ์ด๋ฒคํธ๋ฅผ ํ์ฉํด์ ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
onsubmit ์์
<form action="#" onsubmit="return test()">
<input type="submit" value="submit" />
</form>
<script>
function test() {
console.log("hi");
return false;
}
</script>
// onsubmit์ 'return test()'์ return์ '์ฒ๋ฆฌ๋ฅผ ๋ฐํํ๋ค'๋ผ๋ ์๋ฏธ์ด๋ค.
// false๊ฐ ๋ฐํ๋๋ฉด ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ์ข
๋ฃ์ํค๊ธฐ ๋๋ฌธ์
// action์ด ์ฒ๋ฆฌ๋๋ ์ผ์ ์ผ์ด๋์ง ์๋๋ค.
ํด๋น ํผ ์์์ ์ด๋ค ๊ฐ์ ๋ฃ์ด์ผ ํ๋์ง ์ด๋ฆ์ ๋ถ์ด๋ ์์์ด๋ค.
label์ for์ ๊ฐ๊ณผ ์์์ id์ ๊ฐ์ด ๊ฐ์ผ๋ฉด ์ฐ๊ฒฐ๋๋ค.
์ ์ฐ๊ฒฐ์ด ๋์์ ๋ label์ ํด๋ฆญํ๋ฉด ํด๋น ํผ ์
๋ ฅ ์์๋ก ํฌ์ปค์ค๊ฐ ๋๋ค.
<label for="itemId">์์ด๋ ์
๋ ฅ</label>
<input type="text" id="itemId" />
fieldset์ form์์ ์ฌ๋ฌ ๊ตฌ์ญ์ ๋๋
๊ด๊ณ๋ ์์๋ค๋ผ๋ฆฌ ๋ฌถ์ด์ฃผ๋ฉฐ ๊ทธ๋ฃนํํ ๋ ์ฌ์ฉํ๋ค.
โ ํด๋น ๊ทธ๋ฃน์ ์ด๋ฆ์ ์ ํ ์ ์๋ legend์ ํจ๊ป ์ฐ์ธ๋ค.
์ด๋ ๊ฒ ์ ๋ณด๋ฅผ ๋ฐ๋ก ๊ตฌ๋ณํด ๋๋ฉด ์ฌ์ฉ์๊ฐ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ธฐ ํธํ๊ณ ๊ฐ๋ ์ฑ๋ ์ข์์ง๋ค.
<form>
<fieldset>
<legend> Login </legend>
ID : <input type="text" />
password : <input type="password" />
</fieldset>
<fieldset>
<legend> Login 2 </legend>
E-mail : <input type="e-mail" />
password : <input type="password" />
</fieldset>
</form>
htmlFor
: label์ for์ htmlFor๋ก ์จ์ผ ํจ
required
: ํ์๋ก ์์ฑ
autocomplete
: ๋ธ๋ผ์ฐ์ ๊ฐ ํผ ํ๋์ ์๋์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ ์ ์ํ ๊ฐ์ ์ง์ ํ๋ ์์ฑ
์์ ์ฝ๋
<form onSubmit={onSubmit}>
<label htmlFor='username'>Display name</label>
<input type='text' id='username' name='username' autoComplete='username' required />
<label htmlFor='email'>Email</label>
<input type='email' id='email' name='email' autoComplete='email' required />
<label htmlFor='pwd'>Password</label>
<input type='password' id='pwd' name='pwd' autoComplete='current-password' required />
<button type='submit'>
<div className='submit-bg'>
<span>Sign up</span>
</div>
</button>
</form>
fieldset ์์ ์ฝ๋
<form>
<fieldset>
<legend>์ฌ์ฉ์ ์ ๋ณด</legend>
<label htmlFor="name">์ด๋ฆ:</label>
<input type="text" id="name" name="name"><br>
<label for="email">์ด๋ฉ์ผ:</label>
<input type="email" id="email" name="email"><br>
</fieldset>
<fieldset>
<legend>ํ์ ๊ฐ์
์ ๋ณด</legend>
<label htmlFor="username">์ฌ์ฉ์ ์ด๋ฆ:</label>
<input type="text" id="username" name="username"><br>
<label htmlFor="password">๋น๋ฐ๋ฒํธ:</label>
<input type="password" id="password" name="password"><br>
</fieldset>
<button type="submit">๊ฐ์
ํ๊ธฐ</button>
</form>
input ์๋์์ฑ ์ ๋ฐฐ๊ฒฝ์์ ๋ณํ์ง ์๊ฒ ๋ง๋ค๊ธฐ
input:-webkit-autofill,
input:-webkit-autofill:focus {
-webkit-text-fill-color: var(--white-100);
box-shadow: 0 0 0px 1000px var(--dark-blue-500) inset;
transition: background-color 5000s ease-in-out 0s;
}
๐ ํผ(form) ํ๊ทธ ์๋ฒฝ ์ ๋ฆฌํ ๋ธ๋ก๊ทธ ๋ณด๋ฌ๊ฐ๊ธฐ