나는 탭이있는 양식과 사용자가 양식 탭을 이동하는 동안 유효성을 검사하는 간단한 기능이 있습니다. 나는 현재 부트 스트랩 'hidden.bs.tab'이벤트를 듣고있어제출시 유효한/잘못된 양식 탭을 표시하는 jQuery 유효성 확인
탭 유효성 검사 기능
var validateTab = function(element) {
var _element = $(element);
var validatePane = _element.attr('data-target');
var isValid = $(validatePane + ' :input').valid();
var _li = _element.parent();
// console.log(validatePane + " - " + isValid);
if (isValid) {
_li.removeClass('alert-danger');
_li.addClass('alert-success');
} else {
_li.removeClass('alert-success');
_li.addClass('alert-danger');
}
}; // end function validateTab
을 (jQuery를, 부트 스트랩 및 jquery.validate 사용) 함수를 호출.
// Validate Tab on tab switch.
$(document).on('hidden.bs.tab', 'a[data-toggle="tab"]', function(e) {
validateTab(e.currentTarget);
});
위의 예상대로 작동하지만 양식을 제출할 때도이 작업을 수행하고 싶습니다. 마지막 탭이 유효 할 때 나는이 한 가지 예외와 함께 작동
invalidHandler: function(event, validator) {
console.log('invalid form');
$('#myForm').append(
'<div class="alert alert-danger alert-dismissable">' +
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">' +
'×' +
'</button>' +
'<strong>Error: </strong>' +
'<span>Please correct the problems and try again.</span>' +
'</div>'
);
// ADDED THIS CODE AND STARTED RUNNING INTO PROBLEMS.
var $tabs = $('#myTab li a');
$tabs.each(function(key, ele) {
// IF last Tab of form is Valid form submits regardless of other errors.
validateTab(ele);
});
}
을 확인 각 탭을 얻고 jQuery를의 invalidHandler에서 validateTab()()를 호출하는 간단한 루프를 추가 ... 형태가 갑자기 심지어이 경우 제출 다른 탭의 오류입니다. 이전 호출 또는 invalidHandler가 호출되기 전에 설정된 모든 호출을 유효한 대체 호출로 표시합니다. 갑자기 전체 양식이 성공적으로 검증 된 것처럼 제출됩니다.
전체 예제는 여기에서 찾을 수 있습니다. https://jsfiddle.net/qcean237/1/
현재 TAB 4에 대한 유효성 검사가 없으므로 양식을 제출하는 데 필요한 다른 필드가 없어도 매번 작동합니다.
실패한 제출물의 탭 모양을 업데이트하려면 다른 방식으로 또는 다른 위치에서 탭의 유효성을 검사해야합니까?
감사합니다, 나단
정확히, 그것은 마지막 탭에서 valid()가 호출 될 때까지 모두 작동합니다.마지막 탭이 유효 할 때 전체 양식이 어떻게 든 유효한 것으로 간주됩니다. invalidHandler() 내부에서 valid()를 호출하면 더러움을 느낄 수 있지만 그 모든 것을 지금까지 생각해 냈습니다. – Nathan
* "'invalidHandler()'내부에서'valid()'를 호출하면 더러운"* ~이 발생하고 근본 문제입니다. – Sparky