验证器问题验证startdate with enddate

时间:2016-07-18 10:03:51

标签: jquery jquery-validate

我的验证器错误消息在一个字段上消失了。

我验证两个字段以确定第一个字段(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();
});

0 个答案:

没有答案