<form>의 onsubmit() 함수가 호출되지 않습니다. 채택완료

게시글 작성에 대한 write_skin.php 를 수정하여 사용하고 있습니다.

아래와 같이 onsubmit이 fwrite_submit() 함수에 연결되어 있습니다. 게시글 작성 또는 수정하기 버튼을 클릭 시 fwrite_submit()가 먼저 호출되고 함수 내에서 return true 가 나와야  action url 로 넘어가는것으로 알 고 있습니다.

하지만 아래와 같이 테스트용으로 return false; 를 해줬는데도 무시하고 바로 action url로 제출이 되네요.

혹시 이에 대한 문제 해결법을 알 수 있을까요?
함수 내에 event.defaultPrevent 나 <form onsubmit=fwrite_submit(this); return false;> 등을 해봤지만 해결이 안됐습니다.

Copy
<form name="fwrite" id="fwrite" action= "<?php echo G5_BBS_APPLY_URL ?>"

        onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off" >

........

<button type="submit" id="btn_submit" accesskey="s" class="btn_submit btn">수 정</button>

........

 

<script>

function fwrite_submit(f) {

        console.log("test");

        return false;

}

</script>
 

답변 1개

채택된 답변
+20 포인트

아래의 코드들을 참고 해보세요..

<form name="fwrite" id="fwrite" action="<?php echo G5_BBS_APPLY_URL ?>" method="post" enctype="multipart/form-data" autocomplete="off">
    <!-- form 내용 -->
    <button type="submit" id="btn_submit" accesskey="s" class="btn_submit btn">수 정</button>
</form>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var form = document.getElementById('fwrite');
    form.addEventListener('submit', function(event) {
        event.preventDefault(); // 기본 제출 동작 막기
        if (fwrite_submit(this)) {
            this.submit(); // fwrite_submit이 true를 반환하면 폼 제출
        }
    });
});

function fwrite_submit(f) {
    console.log("test");
    return false; // false를 반환하면 폼이 제출되지 않음
}
</script>

<form name="fwrite" id="fwrite" action="<?php echo G5_BBS_APPLY_URL ?>" method="post" enctype="multipart/form-data" autocomplete="off">
    <!-- form 내용 -->
    <button type="submit" id="btn_submit" accesskey="s" class="btn_submit btn">수 정</button>
</form>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
    $('#fwrite').on('submit', function(e) {
        e.preventDefault(); // 기본 제출 동작 막기
        if (fwrite_submit(this)) {
            this.submit(); // fwrite_submit이 true를 반환하면 폼 제출
        }
    });
});

function fwrite_submit(f) {
    console.log("test");
    return false; // false를 반환하면 폼이 제출되지 않음
}
</script>

<form name="fwrite" id="fwrite" action="<?php echo G5_BBS_APPLY_URL ?>" method="post" enctype="multipart/form-data" autocomplete="off">
    <!-- form 내용 -->
    <button type="button" id="btn_submit" accesskey="s" class="btn_submit btn">수 정</button>
</form>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btn = document.getElementById('btn_submit');
    btn.addEventListener('click', function() {
        if (fwrite_submit(document.getElementById('fwrite'))) {
            document.getElementById('fwrite').submit();
        }
    });
});

function fwrite_submit(f) {
    console.log("test");
    return false; // false를 반환하면 폼이 제출되지 않음
}
</script>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고