2016-06-29 3 views
0

나는 사용자가 자바 스크립트를 사용하여 두 번 제출하는 것을 막으려 고하는 양식이 있습니다. 어떤 이유로 처리기 함수가 false를 반환하고 event.preventDefault가 호출 되더라도 양식은 여전히 ​​여러 번 제출됩니다. 왜 그런지 알아? 또한이 작품을 의도 한대로 어떻게 만들 수 있습니까?자바 스크립트 - 양식 제출 중단 안 함

document.getElementById('my_form').addEventListener("submit", function(evt){ 
    if (validationFunction(document.getElementById('submit_button')) == false) { 
     evt.preventDefault(); 
     return false; 
    } 
}); 

기능 validationFunction는() { 반환 거짓 }

<form method="post" id="my_form"> 
    <input name='textbox'> 
    <input type="submit" id="submit_button"> 
</form> 
+0

? 양식이 이미 제출되었는지 확인하고 있습니까? 모든 것을 게시 할 필요는 없습니다. 그래야만 [mcve]가됩니다. –

+0

유효성 검사 함수가 true 또는 false를 반환합니다. – catbadger

+0

예, 위 코드에서 분명합니다. 문제를 재현하기에는 아직 충분하지 않습니다. 귀하의 예를 만들기에 충분한 코드를 게시 할 수 있습니까 ** 완료 ** (이전 댓글의 링크 참조)? –

답변

1

는 간단한 방법으로 그것을보십시오. 이

HTML처럼

<form id="my_form"> 
<input name='textbox'> 
<input type="button" id="submit_btn"> 
</form> 

JS

`validationFunction`에 무슨 일
document.getElementById("submit_btn").addEventListener("click", function(){ 

document.getElementById("my_form").submit(); // if validation is true run this 
}); 
+0

Nope. addEventListener를 사용해야합니다. – catbadger

+0

편집을 시도하십시오. 그런 다음 유효성 검사 기능을 추가하십시오. –

+0

이제 제출을 중단하지 않을 것입니다. DX – catbadger

1
document.getElementById('my_form').addEventListener("submit", function(evt){ 
    if (validationFunction(document.getElementById('submit_button')) == false) { 

     // anything here 

     evt.preventDefault(); 
     return false; 
    } 

    // anything here 

    event.preventDefault(); 
}); 
+0

항상 이벤트를 종료하지 않습니까? – catbadger

+0

"이벤트 죽이기"란 무엇을 의미합니까? – Kairat

+0

제대로 실행되지 않습니다. 당신이 기본값을 막기 때문입니다. 내 이해는 당신이 거짓으로 돌아올 때 이것을 원한다는 것이다. – catbadger

관련 문제