項目中的表單驗證插件使用的是 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);
}
解決後的效果: