Validate.js 在设置时间日期(datetime)校验上的注意事项

436 阅读1分钟

使用前

在使用时间日期(datetime)检验前,需要先设置值解析 parse 函数和格式化 format 函数。

  • parse 用以将待校验值、设置的最大最小值解析为可比较的数字
  • format 将可比较的数字解析为指定可读格式,用以显示在错误信息中

以下是使用 moment.js 库实现上述函数的一个例子,注入值是日期格式。

validate.extend(validate.validators.datetime, {
  parse: function(value, options) {
    // 将日期格式解析为毫秒时间戳
    return +moment.utc(value);
  },
  format: function(value, options) {
    // 将毫秒时间戳解析为指定日期格式
    var format = options.dateOnly ? "YYYY-MM-DD" : "YYYY-MM-DD hh:mm:ss";
    return moment.utc(value).format(format);
  }
});

参数

参数名说明
earliest待校验日期不能早于给定值,格式需和待校验值相同,会使用 parse 函数解析
latest待校验日期不能晚于给定值,格式需和待校验值相同,会使用 parse 函数解析
dateOnly给定值只能是日期

使用

var constraints = {
  birthday: {
    datetime: {
      dateOnly: true,
      latest: moment.utc().subtract(18, 'years'),
      message: "^You need to be at least 18 years old"
    }
  }
};

validate({birthday: "3013-11-14"}, constraints);
// => {"birthday": ["You need to be at least 18 years old"]}