<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;> 등을 해봤지만 해결이 안됐습니다.
<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
아래의 코드들을 참고 해보세요..
<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>