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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
폼제출 하고 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":"")?>>

 

이런식으로 쓸수 있겠네요

 

 

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

회원로그인

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