2015-05-02 22 views
0

你好,我想添加一个自定义验证器到日期输入正确的方式。angularjs添加日期自定义验证,以检查星期几是否在范围内

我使用默认的验证这种结构:

<div> 
    <input type="text" name="firstName" ng-model="appointmentForm.firstName" ng-minlength=2 required> 
</div> 
<div role="alert"> 
    <span class="error" ng-if="submitted && form.firstName.$error.minlength" > 
    Vul een geldige voornaam 
    </span> 
</div> 
... 

所以我在寻找一种方式,如果输入型日期的工作日为周二至周日这样的范围内,我可以验证:

<input type="date" name="date" ng-model="appointmentForm.date" validate-weekday> 

如何在角度上实现自定义验证器?

+0

退房MomentJS :)它肯定会帮你 – rmuller

+0

虽然不完全一样的上下文,但是[这个答案](http://stackoverflow.com/a/29775049/1526037)可能会有所帮助。 –

回答

1

从开始使用指令开始,您肯定是在正确的路径上。 所有指令将做的是将验证处理程序附加到验证程序集合中,其逻辑为

我已创建了一个存根代码,您可以使用它来启动该进程。你将不得不修改实际的验证代码来表示你的业务逻辑

app.directive('validateWeekday', [function() { 

    function validate(value) { 
     //replace me with correct logic 
     return value == 'this is valid'; 
    } 

    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function (scope, ele, attrs, ngModel) { 
      ngModel.$validators.invalidWeekday = function (modelValue) { 
       return validate(modelValue); 
      } 
     } 
    } 
}]); 

和HTML会像

<form name="appointmentForm"> 
    <input type="text" name="dateOfPurchase" ng-model="dateOfPurchase" validate-weekday> 
    <div class="error-message" ng-show="appointmentForm.dateOfPurchase.$error.invalidWeekday">Valid date is required.</div> 
</form> 

也可以看看在角1.3 ngMesages等验证好东西,到让你的代码更优雅

+0

是的,这看起来正是我在找的东西。 但是验证函数中的正确返回值是什么?我不明白你为什么要检查这个值是否“有效”。 – Kingalione

+0

我给你的只是一个存根代码。你将不得不把你的逻辑做验证来验证功能。我假设你将有一个数组中的所有有效日期,并检查传入的日期与数组中的值。 –

+0

忘记我的问题,我把它带到工作。谢谢 – Kingalione

相关问题