【问题标题】:Datepicker Date validationDatepicker 日期验证
【发布时间】:2013-12-26 18:12:13
【问题描述】:

有没有办法验证从 Datepicker 选择的日期,如果在选择日期后用户删除它的一半,例如选择日期:2013 年 12 月 20 日,并且用户手动从输入框中删除 2013,然后单击保存动作。

现在,当我尝试在服务器端调试和捕获自定义解析异常时,我从 bean 获得的值已经为 null。

你能给我一些关于如何在角度控制器本身上解析这个日期的想法吗?

【问题讨论】:

  • 我用我的 datepicker 和 jquery validate,效果很好,也许你可以试试
  • 我正在使用 angularjs。对不起,我在描述中遗漏了它。

标签: angularjs datepicker


【解决方案1】:

您必须编写自定义验证指令:Fiddle

以下指令采用输入字段中设置的日期字符串。如果您的日期选择器使用其他方法,则必须稍微更改此指令。

myApp.directive('isDate', function () {
    return {
        require: 'ngModel',
        link: function (scope, elem, attr, ngModel) {
            function validate(value) {

                var d = Date.parse(value);

                // it is a date
                if (isNaN(d)) { // d.valueOf() could also work
                    ngModel.$setValidity('valid', false);
                } else {
                    ngModel.$setValidity('valid', true);
                }
            }

            scope.$watch(function () {
                return ngModel.$viewValue;
            }, validate);
        }
    };
});

HTML:

<form name="so">
    <input type="text" ng-model="date" is-date required/>
    <p ng-show="!so.$valid">Date is invalid!</p>
    <p ng-show="so.$valid">Date is valid!</p>
</form>

【讨论】:

  • 它一定要在表单元素中吗?我可以将 name='so' 赋予输入类型本身吗?
  • @user2507845 你用的是什么日期选择器?
  • 我希望禁用日期验证器,以便客户端日历实现仍然可以使用 type=date
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2020-06-24
相关资源
最近更新 更多