构建Valdr自定义验证器

时间:2015-04-12 21:58:05

标签: regex angularjs valdr

我一直在尝试使用Valdr AngularJs插件构建自定义验证器但没有成功。

我要归档的是一个输入文本,它应该接收日期和时间格式,如:dd / MM / yyyy hh:mm(2015年12月12日12:32:10)

基于Valdr文档,这是我到目前为止所做的:


myApp.factory('customValidator', function () {
  return {
    name: 'customValidator', // this is the validator name that can be referenced from the constraints JSON
    validate: function (value, arguments) {
       // value: the value to validate
      // arguments: the validator arguments
      return value === arguments.onlyValidValue;
    }
  };
});

myApp.config(function(valdrProvider)
    {
        valdrProvider.addValidator('customValidator');
        valdrProvider.addConstraints(
            {
                'Person':
                {
                    'date_send':
                    {
                        'customValidator':
                        {
                            'onlyValidValue':'^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[2][0]\d{2})$|^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[2][0]\d{2}\s([0-1]\d|[2][0-3])\:[0-5]\d\:[0-5]\d)$',
                            'message': 'Please date and time format has to be : 12/04/2015 12:32:10'
                        }
                    }
                }
            });
    });

然后在我的表格中,我有以下内容:

<input class="input" name="date_send" id="date_send" type="text" ng-model="date_send" />

但它没有用。

我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

我无法100%确定,因为你没有提供足够的代码,但我猜你的输入字段声明应该是

ng-model="person.date_send"

而不是

ng-model="date_send"

如需参考,请查看custom validator demo。如果您能为plunker提供完整的样本,这总是有用的。