CSS&JS/👀Study and Copy
[JS] vanilla JS로 Serialize 구현하기
arancia_
2025. 6. 16. 14:00
원본 소스 사이트(현재 접속이 안 됨 ㅠㅠ 웹 아카이브에서나 열람 가능
자주 쓰는데 오랫만에 원본사이트 가서 보려고 하니 접속이 안되길래...아카이빙 합니다...

HTML
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <form id="frm"> <fieldset> <legend>체크박스의 경우</legend> <label> <input type="checkbox" name="chk" value="chk1" checked/> <span>값1</span> </label> <label> <input type="checkbox" name="chk" value="chk2"/> <span>값2</span> </label> <label> <input type="checkbox" name="chk" value="chk3" checked/> <span>값3</span> </label> </fieldset> <fieldset> <legend>라디오의 경우</legend> <label> <input type="radio" name="rad" value="rad1"/> <span>값1</span> </label> <label> <input type="radio" name="rad" value="rad2"/> <span>값2</span> </label> <label> <input type="radio" name="rad" value="rad3" checked/> <span>값3</span> </label> </fieldset> <select name="selnormal"> <option value="all">일반 셀렉트</option> <option value="sel1">값1</option> <option value="sel2" selected>값2</option> <option value="sel3">값3</option> </select> <select name="selmultiple" multiple> <option value="all">멀티플 셀렉트</option> <option value="sel1" selected>값1</option> <option value="sel2">값2</option> <option value="sel3" selected>값3</option> </select> <input type="text" name="txt" value="일반 텍스트 단일"/> <textarea name="txtarea">텍스트 영역</textarea> <button type="submit">확인</button> </form> <div id="result" contenteditable="true">json 결과</div> | cs |
JS
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 32 | const $form = document.getElementById("frm"); const $result = document.getElementById("result"); $form.addEventListener("submit", (e) => { e.preventDefault(); const formData = new FormData($form); const data = serialize(formData); console.log(data); $result.innerHTML = JSON.stringify(data); }); function serialize(formData) { const result = {}; for (const [key, value] of formData) { if (result[key] === undefined) { //기존값이 없는 경우엔 바로 현재값으로 지정 result[key] = value; } else { //기존값이 존재하는 경우 if(!Array.isArray(result[key])){ //기존값을 배열로 변환한 뒤 result[key] = [result[key]]; } //현재값 추가 result[key].push(value); }//ifElse }//for return result; }//serialize | cs |