폼제출 하고 input값이 초기화 안되는 방법 있나요?

폼제출 하고 input값이 초기화 안되는 방법 있나요?

QA

폼제출 하고 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>

 

문의주신 내용은 팁게에도 등록했습니다~

https://sir.kr/g5_tip/19882

<div class="cont-radio">
                <input
                    type="radio"
                    name="wr_1"
                    value="1"
                    <?if($write[wr_1]=="1")echo"checked";?>>&nbsp;모두 동의&nbsp;
                <input
                    type="radio"
                    name="wr_1"
                    value="0"
                    <?if($write[wr_1]=="0")echo"checked";?>>&nbsp;동의하지 않음
            </div>
            <div class="btn_confirm">
                <input
                    type="submit"
                    value="작성완료"
                    id="btn_submit"
                    accesskey="s"
                    class="btn_submit">
                <a href="javascript:history.back();" class="btn_cancel">취소</a>
            </div>

와 write_update.head.skin.php파일에
<?
if (!defined("_GNUBOARD_")) return; // 개별 페이지 접근 불가
if ($wr_1 == 0) {
        alert('약관에 동의해 주세요.');
}
?>
를 추가해서 쓰고 있습니다.

--------------------------
적어주신 대로 수정 해보면
<script>
                function check() {
            if(form.wr_1.value == "") {
                alert("약관에 동의해주세요");
                form.wr_1.focus();
                return false;
            } else return true;
            }
            </script>
이렇게 쓰면 될까요??

추가로 단지 채크 유무만 판별하실거면

<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":"")?>>

 

이런식으로 쓸수 있겠네요

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 818
QA 내용 검색
filter #DB ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT