【问题标题】:How do I get masked date in model from input in angular using ui-mask?如何使用ui-mask从角度输入中获取模型中的屏蔽日期?
【发布时间】:2014-01-26 18:13:47
【问题描述】:

我有一个视图要求用户在文本框中输入他们的生日。

我正在使用 UI-Utils 中的掩码指令。

我的视图中有这个输入元素:

<input ui-mask="99/99/9999" placeholder="MM/DD/YYYY" type="text" name="uBirthdate" ng-model="user.birthdate" required/>

在我的控制器中,我将范围设置为

myApp.controller('HomeCtrl', function ($scope, myService){

    $scope.user = registerService.getCurrentUser();

    $scope.submit = function () {
        //do something with $scope.user.birthdate
    };

    }
});

我的问题是,在我的控制器中,birthdate 属性包含来自输​​入的值,没有掩码字符,因此输入为

视图中的11/20/1980 变为11201980 作为$scope 上的属性

如何确保我的控制器中有一个有效的屏蔽日期可以使用?仅供参考,此日期将作为 JSON 在 POST 请求中发送到我的服务器。

【问题讨论】:

    标签: angularjs mask input-mask


    【解决方案1】:

    升级到最新的angular-ui,使用如下语法

    ui-mask="99/99/9999" model-view-value="true"
    

    model-view-value 将遮罩保留在您的模型对象上。

    【讨论】:

    • 有什么办法可以做到 9999 年 12 月 19 日,这样你就不能输入无效的日期。
    • 我会使用客户端验证库来检查有效日期,而不是为此使用掩码
    • momentjs 可以添加以检查@map7 提到的客户端验证。
    • PixMach 可能一直在寻找我在寻找无效日期的 UI 掩码,以防止无效输入。 IE。不只是检查无效状态。 Date mask处的JQuery UI控件还不错。
    【解决方案2】:

    试试这个 https://github.com/candreoliveira/ngMask 全面帮助所有面具

    【讨论】:

      【解决方案3】:

      作为字符串:

      var string = '11201980';
      var month = string.substring(0,2);
      var day = string.substring(2,4);
      var year = string.substring(4,8);
      var birthday = month + '/' + day + '/' + year;
      

      然后,作为日期:

      var birthdate = new Date(birthday);
      

      【讨论】:

        猜你喜欢
        • 2019-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        • 1970-01-01
        • 2018-10-30
        • 2018-11-06
        相关资源
        最近更新 更多