مشکل اعتبار سنجی jQuery validator در Bootstrap tabs
نویسنده: ابوالفضل رجب پور
تاریخ: ۱۳۹۲/۰۹/۲۴ ۹:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
function enableBootstrapStyleValidation() {
$.validator.setDefaults({
ignore: "",
highlight: function (element, errorClass, validClass) {
if (element.type === 'radio') {
this.findByName(element.name).addClass(errorClass).removeClass(validClass);
} else {
$(element).addClass(errorClass).removeClass(validClass);
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
}
$(element).trigger('highlited');
},
unhighlight: function (element, errorClass, validClass) {
if (element.type === 'radio') {
this.findByName(element.name).removeClass(errorClass).addClass(validClass);
} else {
$(element).removeClass(errorClass).addClass(validClass);
$(element).closest('.form-group').removeClass('has-error').addClass('has-success');
}
$(element).trigger('unhighlited');
}
});
} $("#form").validate({
...
rules: {...},
messages: {...},
ignore: "",
...
}); خوب این همون حالت پیش فرضی هست که توضیح دادن: «هنگام validate کردن فرم متوجه میشوید که فقط کنترلهای تب جاری اعتبارسنجی میشوند و بدون توجه به سایر کنترل هایی که در تبهای دیگر هستند». این tab جاری منظور همون به ازای هر tab جداگانه هست.
برای نمایش خودکار تب بعدی هم باید کدنویسی کنید. فقط کافی هست که کلاس active رو به div تب مورد نظر اضافه کنید:
$("#home").removeClass("active"); // this deactivates the home tab
$("#profile").addClass("active"); // this activates the profile tab if ($(".tab-content").find("div.tab-pane.active:has(div.has-error)").length === 0) {
$(".tab-content").find("div.tab-pane:hidden:has(div.has-error)").each(function (index, tab) {
var id = $(tab).attr("id");
$('a[href="#' + id + '"]').tab('show');
});
} $.validator.setDefaults({
//برای رفع مشکل عدم اعتبارسنجی المانهای مخفی مانند تبهای بسته
ignore: [],
invalidHandler: function (event, validator) {
if ($(".tab-content").find("div.tab-pane.active:has(div.has-error)").length === 0) {
$(".tab-content").find("div.tab-pane:hidden:has(div.has-error)").each(function (index, tab) {
var id = $(tab).attr("id");
$('a[href="#' + id + '"]').tab('show');
});
}
}
}); $("form").unbind("invalid-form.validate"); // unbind default MS handler
$("form").bind("invalid-form.validate", function(event , validator) {
if ($(".tab-content").find("div.tab-pane.active:has(div.has-error)").length === 0) {
$(".tab-content").find("div.tab-pane:hidden:has(div.has-error)").each(function (index, tab) {
var id = $(tab).attr("id");
$('a[href="#' + id + '"]').tab('show');
});
}
});