[form] form ์ •๊ทœ์‹์—๋งž์ถฐ์ž‘์„ฑํ•˜๊ธฐ

2020. 3. 16. 17:53ยท๐ŸฃcodeLab

form ์ •๊ทœ์‹์— ๋งž์ถฐ ์ž‘์„ฑํ•˜๊ธฐ

form ํšŒ์›๊ฐ€์ž…

ํšŒ์›๊ฐ€์ž…์œ ํšจ์„ฑ๊ฒ€์‚ฌ

[html ์ฝ”๋“œ]

<body>
  <form name="form" method="post" onsubmit="return checkAll()">
    <table width="750" border="1px" align="center">
      <tr>
        <th colspan="2" bgcolor="#e4f7ba">ํšŒ์› ๊ธฐ๋ณธ ์ •๋ณด</th>
      </tr>
      <tr>
      	<td>์•„์ด๋””</td>
        <td><input type="text" name="userId">4~12์ž์˜ ์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž์™€ ์ˆซ์ž๋กœ๋งŒ ์ž…๋ ฅ</td>
      </tr>
      <tr>
      	<td>๋น„๋ฐ€๋ฒˆํ˜ธ</td>
        <td><input type="password" name="password1">4~12์ž์˜ ์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž์™€ ์ˆซ์ž๋กœ๋งŒ ์ž…๋ ฅ</td>
      </tr>
      <tr>
        <td>๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ</td>
        <td><input type="password" name="password2"></td>
      </tr>
      <tr>
      	<td>๋ฉ”์ผ์ฃผ์†Œ</td>
        <td><input type="text" name="mail">์˜ˆ) id@domain.com</td>
      </tr>
      <tr>
        <td>์ด๋ฆ„</td>
        <td><input type="text" name="name"></td>
      </tr>
      <tr>
      	<td>์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ</td>
        <td>
          <input type="text" name="identi1" style="width: 70px"> - 
          <input tpye="password" name="identi2" style="width: 70px">
        </td>
      </tr>
      <tr>
      	<td>๊ด€์‹ฌ๋ถ„์•ผ</td>
        <td>
          <input type="checkbox" name="favorite" value="์ปดํ“จํ„ฐ">์ปดํ“จํ„ฐ
          <input type="checkbox" name="favorite" value="์ธํ„ฐ๋„ท">์ธํ„ฐ๋„ท
          <input type="checkbox" name="favorite" value="์—ฌํ–‰">์—ฌํ–‰
          <input type="checkbox" name="favorite" value="์˜ํ™”">์˜ํ™”
          <input type="checkbox" name="favorite" value="์Œ์•…">์Œ์•…
        </td>
      </tr>
      <tr>
      	<td>์ž๊ธฐ์†Œ๊ฐœ</td>
        <td><textarea name="introduceMyself" id="intro" col="50" row="10"></textarea></td>
      </tr>
    </table>
    <p align="center">
     <input type="submit" name="join" value="ํšŒ์› ๊ฐ€์ž…" />
     <input type="reset" name="reset" value="๋‹ค์‹œ ์ž…๋ ฅ" />
    </p>
  </form>
</body>

<form name="form" method="post" onsubmit="return checkAll()">

submit ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด script์˜ checkAll() ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

 

[JavaScript ์ฝ”๋“œ]

function checkAll() {
  if(!checkUserId(form.userId.value)) {
    return false;
  } else if (!checkPassword(form.userId.value, form.password1.value, form.password2.value)) {
    return false;
  } else if (!checkMail(form.mail.value)) {
    return false;
  } else if (!checkName(form.name.value)) {
    return false;
  } else if (!checkBirth(form.identi1.value, form.identi2.value)) {
    return false;
  } else if (!checkFavorite()) {
    return false;
  } else if (!checkIntro()) {
    return false;
  }
  return true;
}

์กฐ๊ฑด๋ฌธ์„ ๋ณด๋ฉด checkUserIdํ•จ์ˆ˜์—์„œ ํผ์— ์ž…๋ ฅ๋œ ๊ฐ’์ด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ๋งž์œผ๋ฉด true๋ฅผ return ํ•ด์ค€๋‹ค.

๋”ฐ๋ผ์„œ if์กฐ๊ฑด๋ฌธ ๋‚ด๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค์Œ ์กฐ๊ฑด๋ฌธ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

์•„๋ž˜์˜ else if๋ฌธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋˜‘๊ฐ™์ด ์ˆ˜ํ–‰ํ•œ๋‹ค.

ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ๋Š” form ๋‚ด์— ํ•ด๋‹น๋˜๋Š” inputํƒœ๊ทธ์˜ id๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.

 

[๊ณต๋ฐฑํ•จ์ˆ˜ ํ™•์ธ]

// ๊ณต๋ฐฑํ•จ์ˆ˜ ํ™•์ธ
function checkExistData(value, dataName) {
  if(value == '') {
    alert(dataName + ' ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.');
    return false;
  }
  return true;
}

checkAllํ•จ์ˆ˜๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•จ์ˆ˜์— ์ฒซ๋ฒˆ์งธ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ๊ณต๋ฐฑํ™•์ธํ•จ์ˆ˜์ด๋‹ค.

์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋ฉด์„œ ๊ฐ’์ด ๊ณต๋ฐฑ์ด๋ผ๋ฉด "์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž์™€ ์ˆซ์ž 4~12์ž๋ฆฌ๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ์ถœ๋ ฅํ•ด๋„ ๋˜์ง€๋งŒ ๊ณต๋ฐฑ์ž„์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ๋”ฐ๋กœ ํ•จ์ˆ˜๋ฅผ ๋นผ๋‚ธ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜ค๋Š” value๋Š” inputํƒœ๊ทธ์˜ ๊ฐ’์ด๊ณ  dataName์€ ํ•ด๋‹น๋˜๋Š” input ํƒœ๊ทธ์˜ ์ข…๋ฅ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” string ๋ณ€์ˆ˜์ด๋‹ค.

๊ฐ’์ด ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ, alert๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณต๋ฐฑ์ž„์„ ์•Œ๋ฆฌ๊ณ  false ๋ฅผ return ํ•˜๋ฉด์„œ ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜๋ฅผ ๋๋‚ธ๋‹ค.

 

[์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ•จ์ˆ˜]

  1. id๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜checkuserIdํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜(id)๋กœ ๋„˜์–ด์˜ค๋Š” ๊ฐ’์€ input ํƒœ๊ทธ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์ด๋‹ค. (form.userId.value)checkExistDataํ•จ์ˆ˜๋Š” ๊ณต๋ฐฑํ™•์ธ ํ•จ์ˆ˜์ด๋‹ค.4๋ผ์ธ return false๋ฅผ ํ•ด์ฃผ๋ฉด์„œ checkAllํ•จ์ˆ˜ 2๋ฒˆ 3๋ฒˆ ๋ผ์ธ์—์„œ script๊ฐ€ ๋๋‚œ๋‹ค./ :: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ •๊ทœํ‘œํ˜„์‹์˜ ์ฒ˜์Œ๊ณผ ๋์„ ์˜๋ฏธ.^ :: ๋ฌธ์žฅ์˜ ์ฒ˜์Œ์„ ๋œปํ•œ๋‹ค.{ } :: ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๋œปํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด {4,12}์ผ ๊ฒฝ์šฐ ์ตœ์†Œ๊ธธ์ด 4, ์ตœ๋Œ€๊ธธ์ด 12์ด๋‹ค. /^[a-zA-z0-9]{4,12}$/ ๋ฅผ ๋ถ„์„ํ•˜๋ฉด, ์˜๋ฌธ ๋Œ€/์†Œ๋ฌธ์ž, ์ˆซ์ž๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ, ๊ธธ์ด๋Š” ์ตœ์†Œ 4, ์ตœ๋Œ€ 12๋ฅผ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š” ์ •๊ทœํ‘œํ˜„์‹์ด๋‹ค.
  2. $ :: ๋ฌธ์žฅ์˜ ๋งˆ์ง€๋ง‰์„ ๋œปํ•œ๋‹ค.
  3. [ ] :: ๋ฌธ์ž์…‹์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด [a-z]๋ผ๊ณ  ์ ์„ ๊ฒฝ์šฐ ์ •๊ทœํ‘œํ˜„์‹์— ๋งŒ์กฑํ•˜๋Š” ๊ฐ’๋“ค์€ ๋ฐ˜๋“œ์‹œ a~z์‚ฌ์ด์˜ ๊ฐ’๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.
  4. ์ด์–ด์„œ ์•„์ด๋”” ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ์ •๊ทœํ‘œํ˜„์‹(Regular Expression)์ด๋‹ค.
  5. ๋งŒ์•ฝ id์˜ ๊ฐ’์ด ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ, checkExistDataํ•จ์ˆ˜์—์„œ false๋ฅผ returnํ•ด์ฃผ๋ฏ€๋กœ !์— ์˜ํ•ด if์กฐ๊ฑด๋ฌธ์€ true๊ฐ€ ๋œ๋‹ค.
  6.  
  7. function checkUserId(id) { // id๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ if(!checkExistData(id, '์•„์ด๋””๋ฅผ')) return false; // id ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ var idRegExp = /^[a-zA-z0-9]{4,12}$/; if(!idRegExp.test(id)) { alert('์•„์ด๋””๋Š” ์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž์™€ ์ˆซ์ž 4~12์ž๋ฆฌ๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.'); form.userId.value = ''; form.userId.focus(); return false; } return true; // ํ™•์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ. }

if ์กฐ๊ฑด๋ฌธ์—์„œ test๋Š” ์ •๊ทœํ‘œํ˜„์‹๊ณผ id์˜ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š”์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์ผ์น˜ํ•˜๋ฉด true, ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด false๋ฅผ return ํ•œ๋‹ค. ๋งŒ์•ฝ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•ด๋‹น์กฐ๊ฑด์„ ์•Œ๋ ค์ฃผ๋Š” ์•Œ๋ฆผ์ฐฝ์„ ๋„์›Œ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํผ์— ์ž…๋ ฅ๋œ ๊ฐ’์„ ๊ณต๋ฐฑ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ํฌ์ปค์Šค๋ฅผ ๋งž์ถฐ์ค€๋‹ค.

์ •๊ทœํ‘œํ˜„์‹๊ณผ id์˜ ๊ฐ’์ด ๊ฐ™์„ ๊ฒฝ์šฐ return true๋ฅผ ํ•˜๊ณ  ๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

  1. ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์‚ฌ ํ•จ์ˆ˜๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งŒ์กฑํ•ด์•ผ ํ•  ์กฐ๊ฑด์€,
    1. ์˜๋ฌธ ๋Œ€/์†Œ๋ฌธ์ž์™€ ์ˆซ์ž 4~12์ž๋ฆฌ๋กœ ์ž…๋ ฅํ•  ๊ฒƒ.
    2. ๋น„๋ฐ€๋ฒˆํ˜ธ ๋‘ ๋ฒˆ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ๋‘๋ฒˆ ๋‹ค ์ผ์น˜ํ•  ๊ฒƒ.
    3. ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ถˆ์ผ์น˜ ํ•  ๊ฒƒ.
    checkPasswordํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ id์™€ ๋‘๊ฐœ๋กœ ์ž…๋ ฅ๋œ password๋ฅผ ๋ฐ›๋Š”๋‹ค.
  2. function checkPassword(id, password1, password2) { // ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ. if(!checkExistData(password1, '๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ')) return false; // ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์ด ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ. if(!checkExistData(password2, '๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์„')) return false; // ๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ํšจ์„ฑ๊ฒ€์‚ฌ var password1RegExp = /$^[a-zA-z0-9]{4,12}$/; if(!password1RegExp.test(password1)) { alert('๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž์™€ ์ˆซ์ž 4~12์ž๋ฆฌ๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.'); form.password1.value = ''; form.password1.focus(); return false; } // ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์ด ๋งž์ง€ ์•Š๋‹ค๋ฉด, if(password1 != password2) { alert('๋‘ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.'); form.password1.value = ''; form.password2.value = ''; form.password2.focus(); return false; } // ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™์„ ๋•Œ, if (id === password1) { alert('์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๊ฐ™์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.'); form.password1.value = ''; form.password2.value = ''; form.password2.focus(); return false; } return true; // ํ™•์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ }

๋‘ ๋ฒˆ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‘ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Œ์„ ์•Œ๋ ค์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ์ฐฝ์„ ๊ณต๋ฐฑ์œผ๋กœ ์„ค์ •ํ•ด์ค€ ๋‹ค์Œ ํฌ์ปค์Šค๋ฅผ ๋‘ ๋ฒˆ์งธ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ์ฐฝ์— ์ค€๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ return false.

 

  1. ์ด๋ฉ”์ผ์„ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋ฉ”์ผ ์ •๊ทœํ‘œํ˜„์‹์„ ๋ณด๋ฉด ^[A-Za-z0-9]+[A-Za-z0-9] :: ์ด๋ฉ”์ผ์˜ ๊ฒฝ์šฐ ์ฒซ๊ธ€์ž _๊ฐ€ ํ˜€์šฉ๋˜๋ฏ€๋กœ ์ฒซ๋ฒˆ์งธ ๊ธ€์ž ๊ฒ€์‚ฌ์‹์„ ๋”ฐ๋กœ ๋‘”๋‹ค. ๊ทธ ๋’ค ์˜๋ฌธ ๋Œ€/์†Œ๋ฌธ์ž ์ˆซ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์กฐ๊ฑด์„ ๊ฑด๋‹ค. *[@]{1} :: @๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜๋งŒ ์ž…๋ ฅ.[A-Za-z]{1,3} :: ์ตœ์†Œ ํ•œ๊ธ€์ž ์ตœ๋Œ€ ์„ธ๊ธ€์ž๊นŒ์ง€ ์ž…๋ ฅ ๊ฐ€๋Šฅ.
  2. *[.]{1} :: .์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜๋งŒ ์ž…๋ ฅ.
  3. function checkMail(mail) { // mail์ด ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ. if(!checkExistData(mail, '์ด๋ฉ”์ผ์„')) return false; var emailRegExp = /^[A-Za-z0-9_]+[A-Za-z0-9]*[@]{1}[A-Za-z0-9]+[A-Za-z0-9]*[.]{1}[A-Za-z]{1,3}$/; if(!emailRegExp.test(mail)) { alert('์ด๋ฉ”์ผ ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.'); form.mail.value = ''; form.mail.focus(); return false; } return true; // ํ™•์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ }

์ด๋ฉ”์ผ ๊ฐ’์ด ์ •๊ทœํ‘œํ˜„์‹์— ๋งŒ์กฑํ•  ๊ฒฝ์šฐ return true.

 

  1. ์ด๋ฆ„ ๊ฒ€์‚ฌ ํ•จ์ˆ˜
  2. function checkName(name) { if(!checkExistData(name, '์ด๋ฆ„์„')) return false; var nameExpReg = /^[๊ฐ€-ํžฃ]{2,4}$/; if(!nameRegExp.test(name)) { alert('์ด๋ฆ„์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.'); return false; } return true; }
  3. ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ๊ฒ€์‚ฌํ•จ์ˆ˜๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‘๊ฐœ์ธ ์ด์œ ๋Š” ํผ์—์„œ ์ฃผ๋ฏผ๋ฒˆํ˜ธ ์ž…๋ ฅ์ฐฝ์ด ๋‘๊ฐœ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ.for์กฐ๊ฑด์‹์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด totalIdenti ๊ฐ’์„ identiArr๋ฐฐ์—ด์— ํ•˜๋‚˜ํ•˜๋‚˜ ์ž…๋ ฅํ•ด์ค€๋‹ค.
      1 2 3 4 5 6 - 1 2 3 4 5 6 7
    x 2 3 4 5 6 7   8 9 2 3 4 5  
  4. ๋ฐฐ์—ด์— ์ž…๋ ฅํ•˜๋ฉด์„œ sum๊ฐ’์„ ๋ฐ”๋กœ ๊ณ„์‚ฐํ•ด์ค€๋‹ค.
  5. ์ด ๋•Œ๋ฌธ์— totalIdenti๋ผ๋Š” ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด ๊ฒฐํ•ฉํ•ด์ค€๋‹ค.
  6. function checkBirth(identi1, identi2) { // birth ์ž…๋ ฅํ™•์ธ. if(!checkExistData(identi1, '์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋ฅผ' || !checkExistData(identi2, '์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋ฅผ'))) return false; var totalIdenti = '' + identi1 + identi2; var identiArr = new Array(); var sum = 0; var plus = 2; // ๋ฐฐ์—ด์— ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ์ž…๋ ฅ ํ›„ ์œ ํšจ๊ฐ’ ํ™•์ธ์œ„ํ•ด sum์— ์ €์žฅ for(var i = 0; i < 12; i++) { identiArr[i] = totalIdenti.charAt(i); if(i >= 0 && i <= 7) { sum += totalIdenti[i] * plus; plus++; if(i == 7) plus = 2; } else { sum += totalIdenti[i] * plus; plus++; } } // ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ๊ธธ์ด ํ™•์ธ if(identiArr.length < 12) { alert('์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋Š” 13์ž๋ฆฌ์ž…๋‹ˆ๋‹ค.'); form.identi1,value = ''; form.identi2.value = ''; form.identi1.focus(); return false; } // ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ์œ ํšจํ•œ์ง€ ํ™•์ธ var result = 11 - (sum % 11) % 10; if(result != totalIdenti.charAt(12)) { alert('์œ ํšจํ•˜์ง€์•Š์€ ์ฃผ๋ฏผ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.'); form.identi1.value = ''; form.identi2.value = ''; form.identi1.focus(); return false; } return true; }

์œ„์˜ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌํ‘œ๋ฅผ ๋ณด๋ฉด 1๋ฒˆ์งธ๋ถ€ํ„ฐ 8๋ฒˆ์งธ ์ž๋ฆฌ๊นŒ์ง€ 2๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ’์ด ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ๊ณฑํ•ด์ง€๋‹ค๊ฐ€ 9๋ฒˆ์งธ ์ž๋ฆฌ๋ถ€ํ„ฐ๋Š” ๋‹ค์‹œ 2๋กœ ๋Œ์•„๊ฐ„๋‹ค.

 

  1. ๊ด€์‹ฌ๋ถ„์•ผ์—์„œ ํ•˜๋‚˜ ์ด์ƒ ์ฒดํฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜document.getElementsByName('favorite')๋Š” HTML์—์„œ ๊ฐ™์€ name('favorite')์œผ๋กœ ๋ฌถ์ธ checkbox์˜ ๊ฐ’์„ ๋ฐฐ์—ด๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
  2. for๋ฌธ์—์„œ ์ฒดํฌ๋œ ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์„ ๊ฒฝ์šฐ ๋ฐ”๋กœ true๋ฅผ return ์‹œ์ผœ์คŒ์œผ๋กœ์จ ํ•จ์ˆ˜๋ฅผ ๋๋‚ธ๋‹ค. for๋ฌด๋„น์„œ return ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ฒดํฌ๋œ ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์•Œ๋ฆผ์ฐฝ์„ ๋„์›Œ์ฃผ๊ณ  return false ํ•ด์ค€๋‹ค.
  3. function checkFavorite() { var checkedFavorite = document.getElementsByName('favorite'); // ์ฒดํฌ๋œ ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์„ ๊ฒฝ์šฐ ๋ฐ”๋กœ true for(var i = 0; i < checkedFavorite.length; i++) { if(checkedFavorite[i].checked == true) { return true; } } alert('๊ด€์‹ฌ๋ถ„์•ผ๋ฅผ ์ฒดํฌํ•ด์ฃผ์„ธ์š”.'); return false; }
  4. ์ž๊ธฐ์†Œ๊ฐœ์„œ ํ•ญ๋ชฉ์— ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
  5. function checkIntro() { var text = document.getElementById('intro'); if(!checkExistData(text.value, '์ž๊ธฐ์†Œ๊ฐœ๋ฅผ')) { alert('์ž๊ธฐ์†Œ๊ฐœ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.'); return false; } else { return true; } }

 

์ „์ฒด์ ์ธ JavaScript ์ฝ”๋“œ์ด๋‹ค.

function checkAll() {
  if(!checkUserId(form.useId.value)) {
    return false;
  } else if (!checkPassword(form.userId.value, form.password1.value, form.password2.value)) {
    return false;
  } else if (!checkMail(form.mail.value)) {
    return false;
  } else if (!checkName(form.name.value)) {
    return false;
  } else if (!checkBirth(form.identi1.value, form.identi2.value)) {
    return false;
  } else if (!checkFavorite()) {
    return false;
  } else if (!checkIntro()) {
    return false;
  }
  return true;
}

// ๊ณต๋ฐฑํ•จ์ˆ˜ ํ™•์ธ
function checkExistData(value, dataName) {
  if(value == '') {
    alert(dataName + ' ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.');
    return false;
  }
  return true;
}

function checkUserId(id) {
  // id๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
  if(!checkExistData(id, '์•„์ด๋””๋ฅผ'))
    return false;
  
  // id ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
  var idRegExp = /^[a-zA-z0-9]{4,12}$/;
  if(!idRegExp.test(id)) {
    alert('์•„์ด๋””๋Š” ์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž์™€ ์ˆซ์ž 4~12์ž๋ฆฌ๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.');
    form.userId.value = '';
    form.userId.focus();
    return false;
  }
  return true; // ํ™•์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ.
}

function checkPassword(id, password1, password2) {
  // ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.
  if(!checkExistData(password1, '๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ'))
    return false;
  // ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์ด ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.
  if(!checkExistData(password2, '๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์„'))
    return false;
  
	// ๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ํšจ์„ฑ๊ฒ€์‚ฌ
  var password1RegExp = /$^[a-zA-z0-9]{4,12}$/;
  if(!password1RegExp.test(password1)) {
    alert('๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž์™€ ์ˆซ์ž 4~12์ž๋ฆฌ๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.');
    form.password1.value = '';
    form.password1.focus();
    return false;
  }
  // ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์ด ๋งž์ง€ ์•Š๋‹ค๋ฉด,
  if(password1 != password2) {
    alert('๋‘ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.');
    form.password1.value = '';
    form.password2.value = '';
    form.password2.focus();
    return false;
  }
  
  // ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™์„ ๋•Œ,
  if (id === password1) {
    alert('์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๊ฐ™์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.');
    form.password1.value = '';
    form.password2.value = '';
    form.password2.focus();
    return false;
  } 
  return true; // ํ™•์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ
}

function checkMail(mail) {
  // mail์ด ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ.
  if(!checkExistData(mail, '์ด๋ฉ”์ผ์„'))
    return false;
  
  var emailRegExp = /^[A-Za-z0-9_]+[A-Za-z0-9]*[@]{1}[A-Za-z0-9]+[A-Za-z0-9]*[.]{1}[A-Za-z]{1,3}$/;
  if(!emailRegExp.test(mail)) {
    alert('์ด๋ฉ”์ผ ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.');
    form.mail.value = '';
    form.mail.focus();
    return false;
  }
  return true; // ํ™•์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ
}

function checkName(name) {
  if(!checkExistData(name, '์ด๋ฆ„์„'))
    return false;
  
  var nameExpReg = /^[๊ฐ€-ํžฃ]{2,4}$/;
  if(!nameRegExp.test(name)) {
    alert('์ด๋ฆ„์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.');
    return false;
  }
  return true;
}

function checkBirth(identi1, identi2) {
  // birth ์ž…๋ ฅํ™•์ธ.
  if(!checkExistData(identi1, '์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋ฅผ' || !checkExistData(identi2, '์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋ฅผ')))
    return false;
  
  var totalIdenti = '' + identi1 + identi2;
  
  var identiArr = new Array();
  var sum = 0;
  var plus = 2;
  
  // ๋ฐฐ์—ด์— ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ์ž…๋ ฅ ํ›„ ์œ ํšจ๊ฐ’ ํ™•์ธ์œ„ํ•ด sum์— ์ €์žฅ
  for(var i = 0; i < 12; i++) {
    identiArr[i] = totalIdenti.charAt(i);
    if(i >= 0 && i <= 7) {
      sum += totalIdenti[i] * plus;
      plus++;
      if(i == 7) plus = 2;
	  } else {
  	  sum += totalIdenti[i] * plus;
    	plus++;
  	}
  }
  
  // ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ๊ธธ์ด ํ™•์ธ
  if(identiArr.length < 12) {
    alert('์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋Š” 13์ž๋ฆฌ์ž…๋‹ˆ๋‹ค.');
    form.identi1,value = '';
    form.identi2.value = '';
    form.identi1.focus();
    return false;
  }
  
  // ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ์œ ํšจํ•œ์ง€ ํ™•์ธ
  var result = 11 - (sum % 11) % 10;
  if(result != totalIdenti.charAt(12)) {
    alert('์œ ํšจํ•˜์ง€์•Š์€ ์ฃผ๋ฏผ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.');
    form.identi1.value = '';
    form.identi2.value = '';
    form.identi1.focus();
    return false;
  }
  return true;
}

function checkFavorite() {
  var checkedFavorite = document.getElementsByName('favorite');
  
  // ์ฒดํฌ๋œ ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์„ ๊ฒฝ์šฐ ๋ฐ”๋กœ true
  for(var i = 0; i < checkedFavorite.length; i++) {
    if(checkedFavorite[i].checked == true) {
      return true;
    }
  }
  alert('๊ด€์‹ฌ๋ถ„์•ผ๋ฅผ ์ฒดํฌํ•ด์ฃผ์„ธ์š”.');
  return false;
}

function checkIntro() {
  var text = document.getElementById('intro');
  if(!checkExistData(text.value, '์ž๊ธฐ์†Œ๊ฐœ๋ฅผ')) {
    alert('์ž๊ธฐ์†Œ๊ฐœ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.');
    return false;
  } else {
    return true;
  }
}

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐ŸฃcodeLab' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • var flag = false ํ•ด์ฃผ๋Š” ์ด์œ 
  • rollingSlide ๋งŒ๋“ค๊ธฐ
  • [์•„์ฝ”๋””์–ธ๋ฉ”๋‰ด] 3level accordion menu
  • [์Šฌ๋ผ์ด๋“œ] prpend / append ์‚ฌ์šฉํ•˜์—ฌ ์Šฌ๋ผ์ด๋“œ๋งŒ๋“ค๊ธฐ
jmjm
jmjm
  • jmjm
    /* jmjmjm */
    jmjm
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (140)
      • ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY (101)
        • HTML (9)
        • CSS (25)
        • SASS (4)
        • JavaScript (19)
        • jQuery (9)
        • Publishing (8)
        • Git (11)
        • React (14)
        • Vue (0)
        • ์›น์ ‘๊ทผ์„ฑ (1)
        • Gulp (1)
      • ๐ŸฃcodeLab (28)
      • ๐ŸŒˆetc (8)
      • ๐Ÿฅฐ ์ผ์ƒ (2)
      • ๐ŸŒŸ์ฝ์–ด๋ณด๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    javascript nodelist
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น
    javascript ์ปฌ๋ ‰์…˜
    ํ˜•์ œ์ธ์ ‘์ž
    html collection
    ์•„์ฝ”๋””์–ธ๋ฉ”๋‰ด
    ์›น์ ‘๊ทผ์„ฑ
    vscode ๋‹จ์ถ•ํ‚ค
    CSS ์„ ํƒ์ž
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹๋ฌธ
    ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น ์ข…๋ฅ˜
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปฌ๋ ‰์…˜
    ๋ง์ค„์ž„ tooltip
    sass compiler
    css ํ˜•์ œ์ธ์ ‘์ž ์•ˆ๋ผ์š”
    ๋ง์ค„์ž„ hover
    sticky jsfiddle
    javascript ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น
    javascript htmlcollection nodelist
    css flex
    javascript htmlcollection
    HTML Form
    ๋ง์ค„์ž„ ํˆดํŒ
    ๋ง์ค„์ž„ ํ˜ธ๋ฒ„
    sass
    react import export
    css ๊ฐ€์ƒ์„ ํƒ์ž
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹ ๋ฌธ
    ํ˜•์ œ์ธ์ ‘์ž display none
    ํ˜•์ œ์ธ์ ‘์ž ์•ˆ๋˜๋Š” ์ด์œ 
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
jmjm
[form] form ์ •๊ทœ์‹์—๋งž์ถฐ์ž‘์„ฑํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”