여러 텍스트 필드의 유효성을 검사하기 위해 jQuery 유효성 검사 플러그인을 사용하고있는 페이지가 있습니다. 이 여러 페이지에 버튼을 제출하고, 다음과 같이 나는 발리를 구성한 :
_validator = $("#ftsEditTripForm").validate({
onkeyup: false,
submitHandler: function() {}
});
나는 페이지의 모든 제출 버튼에 대해 다음 클릭 이벤트 핸들러를 등록 :이있다
function clickHandler(jqEvent) {
var action = jqEvent.target.id;
if (action !== "cancel") {
_form$.validate();
if (_validator.numberOfInvalids() === 0) {
submitForm(action);
}
} else {
confirmCancel(action);
}
}
function submitForm(action) {
$(".flowEvent").attr("name", "_eventId_" + action);
if (action === "submit") {
$("input[name=status]").val("S");
} else {
$("input[name=status]").val("D");
}
_form$[0].submit();
}
잘 작동 해. 사용자가 제출 버튼 중 하나를 클릭 할 때까지 유효성 검사가 수행되지 않고 해당 버튼이 취소 버튼 인 경우 페이지가 실제로 제출되기 전에 사용자가 페이지에서 변경 한 내용을 잃고 싶다는 확인 메시지가 표시됩니다. 따라서 사용자가 Cancel 버튼을 클릭 한 다음 No 버튼을 클릭하면 취소 작업을 계속하지 않으려 고 함을 의미하므로 페이지 제출을 중단합니다.
이제 탐색 바에 탭을 추가했습니다. 사용자가 지금있는 페이지의 탭 이외의 탭을 클릭하면 동일한 종류의 작업을 수행해야합니다. 탭이 된 div로 구현하고, 나는 그 div에 대해 다음 클릭 이벤트 처리기를 정의했습니다 :
function tabClickHandler(jqEvent) {
var target = jqEvent.target;
while (! $(target).hasClass("navTab")) {
target = target.parentNode;
}
var tabNumber = target.dataset.tabnumber;
_form$.validate();
if (_validator.numberOfInvalids() === 0) {
$("input[name=tabNumber]").val(tabNumber);
submitForm("navbar");
}
}
내 문제는 내가 탭을 클릭하면 _validator.numberOfInvalids()는 항상 0을 반환한다는 것입니다. 유효성 검사 코드에 중단 점을 넣었고 탭을 클릭해도 호출되지 않습니다. 따라서 유효성 검사 오류가 있더라도 페이지는 항상 제출됩니다.
여러 가지를 시도해 보았습니다. 유효성 검사 플러그인의 onsubmit 및 submitHandler 옵션에 대한 다양한 값으로 탭 div를 버튼으로 변경하여 성공하지 못했습니다.
누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다. 이 작업을 다른 방법으로 수행해야하며 유효성 검사 플러그인을 계속 사용하고 싶습니다.
지금까지 읽어 주셔서 감사합니다.
톰