TL; DR : 오래된 브라우저는 신경 쓰지 않습니까? 사용 form.reportValidity()
.
레거시 브라우저 지원이 필요하십니까? 읽어.
그것은 사실 입니다 수동으로 트리거 유효성 검사 가능.
재사용 가능성을 높이기 위해 내 대답에 일반 JavaScript를 사용하겠습니다. jQuery는 필요하지 않습니다.
다음 HTML 양식을 가정하십시오.
<form>
<input required>
<button type="button">Trigger validation</button>
</form>
그리고 JavaScript에서 UI 요소를 가져옵니다.
var form = document.querySelector('form')
var triggerButton = document.querySelector('button')
Internet Explorer와 같은 레거시 브라우저에 대한 지원이 필요하지 않습니까? 이건 널위한거야.
모든 최신 브라우저 는 요소에 대한 방법을 지원 합니다 .reportValidity()
form
triggerButton.onclick = function () {
form.reportValidity()
}
그게 다야. 또한 이 접근 방식을 사용 하는 간단한 CodePen 이 있습니다.
구형 브라우저에 대한 접근 방식
다음은 reportValidity()
이전 브라우저에서 어떻게 에뮬레이션 할 수 있는지에 대한 자세한 설명 입니다.
그러나 이러한 코드 블록을 프로젝트에 직접 복사하여 붙여 넣을 필요는 없습니다 . 쉽게 사용할 수 있는 포니 필 / 폴리 필 이 있습니다.
reportValidity()
지원되지 않는 곳 에서는 브라우저를 약간 속일 필요가 있습니다. 그래서 우리는 무엇을할까요?
- 을 호출하여 양식의 유효성을 확인하십시오
form.checkValidity()
. 양식이 유효한지 여부는 알려주지 만 유효성 검사 UI는 표시되지 않습니다.
- 양식이 유효하지 않은 경우 임시 제출 버튼을 만들고 클릭을 트리거합니다. 형식이 유효하지 않기 때문에, 우리가 알고 그것을하지 않습니다 실제로 하지만, 사용자에게 검증 힌트를 표시합니다, 제출합니다. 임시 제출 버튼은 즉시 제거되므로 사용자에게 표시되지 않습니다.
- 양식이 유효하면 우리는 전혀 방해 할 필요가 없으며 사용자가 계속 진행하도록합니다.
코드에서 :
triggerButton.onclick = function () {
// Form is invalid!
if (!form.checkValidity()) {
// Create the temporary button, click and remove it
var tmpSubmit = document.createElement('button')
form.appendChild(tmpSubmit)
tmpSubmit.click()
form.removeChild(tmpSubmit)
} else {
// Form is valid, let the user proceed or do whatever we need to
}
}
이 코드는 거의 모든 일반적인 브라우저에서 작동합니다 (IE11까지 성공적으로 테스트했습니다).
다음은 작동하는 CodePen 예제입니다.