如何使用Angularjs验证年龄?

时间:2013-08-26 13:07:14

标签: validation angularjs angularjs-directive angularjs-scope

我们正在为项目使用Angular js。我们正在通过Angular js处理所有验证。

我们可以验证除下拉框之外的所有文本字段。

我们有三个日期字段的下拉框(dd mm yyyy)。现在我有两个问题......

  1. 如果我可以从这三个下拉列表中获取值以及如何形成日期。

  2. 然后,我想验证该日期(如果年龄大于50,则设置错误标志)。我怎么能用Angular js做到这一点?如果用户选择年龄超过50岁,我想将Form设置为无效。

  3. 请建议我这个?我对角度js完全不熟悉。

1 个答案:

答案 0 :(得分:1)

我没有任何代码可以帮助您确定正确的年龄:

$scope.dateDiff = function(birthMonth, birthDay, birthYear) {
    var todayDate = new Date(),
        todayYear = todayDate.getFullYear(),
        todayMonth = todayDate.getMonth(),
        todayDay = todayDate.getDate(),
        age = todayYear - birthYear; 

    if (todayMonth < birthMonth - 1)
    {
      age--;
    }

    if (birthMonth - 1 === todayMonth && todayDay < birthDay)
    {
      age--;
    }
    return age;
};

$scope.dateDiff(8,15,1963); // return as 50 as birthday has passed
$scope.dateDiff(9,15,1963); // return as 49 as birthday has not yet happened

在您的HTML中,您可以使用ng-options来允许用户从下拉列表中选择日期。

Day <select ng-model="selectedDay" ng-options="day as day.date for day in days"></select>

Here is a full working example

由于您是Angular的新手,请确保您花时间了解此代码的工作原理。 ng-options起初可能看起来有些混乱,但是当你开始理解角度原则时,它应该不是问题。