양식 요소의 onsubmit = ""은 이벤트 기능을 정의합니다. 리턴 값은 정의 된 경우 브라우저로 다시 전달됩니다. 잘못된 값 (false, null, undefined 등)은 브라우저가 양식 제출을 진행하지 못하게합니다.
그것은 다른 기능
function isValid(form) {
if (someBadCondition) {
// record some error somewhere
return false;
}
if (someHorribleCondition || someEquallyBadCondition) {
// record some other error
return false;
}
return true;
}
function canSubmitForm(form) {
isValid(form);
}
마지막 줄은 결코 반환 값을 다시 통과하지 유사합니다. 따라서
console.log(isValid(someForm)); // true
console.log(canSubmitForm(someForm)); // undefined
onSubmit = "submitForm()"을 canSubmitForm으로 생각하십시오. 그것이 실제로 정확히 무엇입니까. onsubmit = ""에서 정의하는 것은 "우리가 제출할 수 있습니까?"라는 질문에 대한 답으로 함수로 평가됩니다. return 문은 지금 canSubmitForm의 호출자를 통해 isValid의 결과를 전달합니다
function canSubmitForm(form) {
return isValid(form);
}
주의 사항 :
당신처럼 위의 예를 해결하는 것입니다.
따라서
onsubmit="submitForm();"
및
onsubmit="return submitForm();"
사이의 디퍼 런스 세라마이드는 이전에 SubmitForm에의 리턴 값이 무시된다는 것이다. 다음 예제에서 submitForm이 값을 반환하면 브라우저 인 onsubmit 호출자에게 전달됩니다.
"양식을 제출할 때 양식을 제출하십시오."라는 내용의 코드가 있기 때문에 양식을 두 번 제출했을 가능성이 큽니다.
submitForm javascript 함수가 제출 프로세스 (ajax w/graceful 저하와 같은 것이 일반적 임)를 소유해야하는 경우 이벤트 핸들러에 return false를 추가해야합니다.
onsubmit="submitForm(); return false"
또는 변경 SubmitForm에
는 false를 반환하고 다음 onsubmit 당신이 이벤트 처리기에서 명시 적으로 거짓을 넣어 내가 이전 추천
onsubmit="return submitForm();"
function submitForm() {
// do some submission stuff
return false;
}
에 전달할 수 있습니다. 그 이유는 이벤트 핸들러가 false가 필요한 이유입니다. 제출은 거짓이 아닙니다. 당신은 어떻게 든 실패하거나 거절하지 않았습니다. submitForm은 제출물에 초점을 맞추고 이벤트 처리기가 브라우저 이벤트 처리 항목을 처리하도록해야합니다. 게다가 코드에 오류가 있습니다.
예제는 이해가되지 않습니다. 왜 함수를 onsubmit이라고 부르며 그 함수에서 동일한 형식을 다시 제출하겠습니까? 럭키 브라우저가 종료되거나 무한 루프가 발생합니다. – epascarello
그리고 방금 제목이 변경되어서 제목이 질문과 일치하지 않습니다. – epascarello
@epascarello 그래서 더 잘 이해할 수 있습니다. – code511788465541441