폼제출 하고 input값이 초기화 안되는 방법 있나요?
본문
폼 입력 후 약관동의하지 않음을 선택하면 '약관을 동의해주세요'라는 알림이 뜨게 설정해놨는데
그 후에 폼에 입력해놓은 값들이 초기화되서 없어져 버립니다 ㅠ
폼 제출 전에는 입력해놓은 값들은 유지하는 방법 있을까요?
답변 6
데이터 형태가 어떠한 형태인지 알수가 없어서
기본적은 form & submit 형태로 알려드립니다.
<form name="form" onsubmit="return check()">
<input type="text" name="id">
<input type="text" name="pw">
<input type="submit">
</form>
<script>
function check() {
if(form.id.value == "") {
alert("ID를 입력해주세요.");
form.id.focus();
return false;
} else if(form.pw.value == "") {
alert("PASSWORD를 입력해 주세요.");
form.pw.focus();
return false;
} else return true;
}
</script>
문의주신 내용은 팁게에도 등록했습니다~
!-->세션이나 쿠키를 이용해보세요.
ajax로 하시면 원하시는데로 처리가 될거 같습니다. 통신이 제대로 되면 폼을 초기화 하시고요.
추가로 단지 채크 유무만 판별하실거면
<input type="checkbox" required>
이렇게 checkbox 에도 필수입력 할당이 가능합니다.
단, ie11 이하 구버전 브라우저에서는 작동하지 않을 수 있습니다.
onsubmit 이벤트 핸들러에 대해
return 처리가 제대로 되지 않았거나 에러가 발생해서
그대로 서브밋 되었을 가능성이 있을것으로 유추됩니다.
케이스별 상황의 예시가 도움이 될지 모르겠습니다.
<script>
function fsubmit_err_0(fobj) {
if (fobj.chk.checked == false) {
alert('약관을 동의해주세요');
}
// no return
}
function fsubmit_err_1(fobj) {
if (fobj.chk.checked == false) {
alert('약관을 동의해주세요');
fobj.not_exists_elements.focus(); // error. not exists element
return false;
}
return true;
}
function fsubmit(fobj) {
if (fobj.chk.checked == false) {
alert('약관을 동의해주세요');
return false;
}
return true;
}
</script>
<form method="post" onsubmit="return fsubmit_err_0(this)">
<fieldset>
<legend><h2>Submit Error</h2> by no return statement</legend>
<ul>
<li><label>a : <input name="a" type="text" /></label></li>
<li><label>b : <input name="b" type="text" /></label></li>
<li><label><input name="chk" type="checkbox" /> 약관을 동의</label></li>
<li><input type="submit" /></li>
</ul>
</fieldset>
</form>
<form method="post" onsubmit="return fsubmit_err_1(this)">
<fieldset>
<legend><h2>Submit Error</h2> by not exists element</legend>
<ul>
<li><label>a : <input name="a" type="text" /></label></li>
<li><label>b : <input name="b" type="text" /></label></li>
<li><label><input name="chk" type="checkbox" /> 약관을 동의</label></li>
<li><input type="submit" /></li>
</ul>
</fieldset>
</form>
<form method="post" onsubmit="return fsubmit(this)">
<fieldset>
<legend><h2>Submit normal</h2></legend>
<ul>
<li><label>a : <input name="a" type="text" /></label></li>
<li><label>b : <input name="b" type="text" /></label></li>
<li><label><input name="chk" type="checkbox" /> 약관을 동의</label></li>
<li><input type="submit" /></li>
</ul>
</fieldset>
</form>
다른분들이 html형태로 쉽게 잘 설명해주셨는데요
php로 해보면 이용약관 값을 post나 get 등으로 받아서 체크해보는 방법도 있을수 있을것 같네요
이용약관 체크했는지 여부 변수를 a라고 한다면 값을 chk로 받아서 비교하는 방법으로 하면될것 같네요
<input type="checkbox" name="term" value="Y" <?=($a=="chk"?"checked":"")?>>
이런식으로 쓸수 있겠네요
답변을 작성하시기 전에 로그인 해주세요.