我正在尝试解决需要隐藏在选项卡后面的表单字段的问题。
我已经设法让这一半工作,这样当您单击提交按钮任何必填+隐藏字段时,它将自动显示此选项卡。
但问题是当你: 1. 加载页面,单击“提交”,效果很好。 2. 返回第一个选项卡,再次单击“提交”,但没有任何反应。
// Form validator
var theForms = $("form[method=post]:not(.noValidate)");
if (theForms.length){
theForms.each(function(){
var $dis = $(this);
if($dis.hasClass("validateHidden")){
jQuery.validator.setDefaults({
ignore: ''
});
}
validater = $dis.validate({
errorPlacement: function(error, element) {
var trigger = element.next('.ui-datepicker-trigger, .input-label');
if(!trigger.length){ trigger = element.parent('label'); }
var labelWidth = element.parent("p").not(".full").find("label").eq(0).width();
error.insertAfter(trigger.length > 0 ? trigger : element)
.css("marginLeft", labelWidth);
// Check if hidden inside tab
if(element.parents(".tab").is(":hidden")){
var tabs = element.parents(".tabs");
tabs.find(".tab").hide();
var tab = $("#"+element.parents(".tab").attr("id"));
tab.show();
tabs.find(".tabmenu li").removeClass("selected");
tabs.find(".tabmenu li").eq(tab.index()-1).addClass("selected");
}
}
});
$('.tabs').bind('tabsselect', function(){
validater.resetForm();
});
});
}
最佳答案
问题是由于 errorPlacement
对于每个经过验证的元素仅调用一次。
查看这个问题:jQuery Validation Plugin: Invoke errorPlacement function when onfocusout, keyup and click
他们建议使用 showErrors
方法进行任何重复验证。
关于jQuery 在选项卡中验证仅适用于首次提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13193387/