项目中的表单验证插件使用的是 bootstrapValidator
日期选择插件使用的是laydate
在点击submit进行laydate非空验证后(如图1),更换日期(如图2),不会再次触发bootstrapValidator验证
图1
图2
问题的根本就是:bootstrapValidator不会校验已经校验过的表单(网上的思路,我没有研究,本着解决问题的初衷)
解决办法:初始化laydate的时候,在laydate的done回调方法中单独在对时间字段进行验证:
laydate.render({
elem: '#enterTime', istime: true, format: 'yyyy-MM-dd', theme: '#33cabb',
done: function () {
reValidateField("enterTime", "signupForm");
}
});
/**
* 单独校验某个字段 是否非空
* @param fieldId
* @param formId
*/
function reValidateField(fieldId,formId) {
//校验之前重置某个验证字段验证规则
$("#"+formId).data("bootstrapValidator").updateStatus(fieldId, "NOT_VALIDATED", null );
//单独校验这个field
$("#"+formId).data('bootstrapValidator').validateField(fieldId);
}
解决后的效果: