我的验证器错误消息在一个字段上消失了。
我验证两个字段以确定第一个字段(startdate)的日期值是否小于第二个字段的日期值(enddate)。如果startdate或enddate更改为enddate之外的日期,则会在enddate字段旁边显示错误消息。
除此之外,我还要验证正确的日期格式(美国)。如果日期格式不正确,则会在更改的字段旁边显示错误消息。
我重新创建了这种情况:https://jsfiddle.net/fzbqqsfb/4/
HTML:
<form>
<label>field one:
<input name="one" type="text" class="date startdate before-enddate">
</label>
<label>field two:
<input name="two" type="text" class="date enddate after-startdate">
</label>
</form>
使用Javascript:
$.validator.addMethod("beforeEndDate", function(value, element, params) {
var validator = $(element).closest('form').validate();
validator.element(params);
return true;
}, "starting date must be before end date");
$.validator.addMethod("afterStartDate", function() {
return Date.parse($('.startdate').val()) < Date.parse($('.enddate').val());
}, "end date must be after start date");
$.validator.addClassRules({
'before-enddate': {
beforeEndDate: '.enddate'
},
'after-startdate': {
afterStartDate: '.startdate'
}
});
$('form').validate();
如果在startdate字段中日期格式不正确,我将收到预期的错误消息&#34;请输入有效日期。&#34;但当我将其更正为有效日期时,错误消息将不会消失。
我明显做错了,但两天后我找不到问题。也许这是validor.element(el)构造的一个问题?
解决方法(19-07-2016)
我通过在验证本身之外移动验证触发器,为我的问题找到了可接受的解决方案/解决方法。它将验证完整的表单,向所有字段添加和删除正确的错误消息。
$.validator.addMethod("afterStartDate", function() {
return Date.parse($('.startdate').val()) < Date.parse($('.enddate').val());
}, "end date must be after start date");
$.validator.addClassRules({
'after-startdate': {
afterStartDate: '.startdate'
}
});
$('form').validate();
$('.startdate').on('change', function() {
$(this).closest('form').valid();
});