加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Kendo AngularJS DatePicker自定义验证

发布时间:2020-12-17 16:57:46 所属栏目:安全 来源:网络整理
导读:如何为Kendo Angular指令DatePicker进行自定义验证?我想实现以下示例,但使用DatePicker的Angular指令版本: KendoUI DatePicker validation when multiple date fields are on a page 任何帮助,将不胜感激. 解决方法 这就是我使用自己的模板和验证实现基于K
如何为Kendo Angular指令DatePicker进行自定义验证?我想实现以下示例,但使用DatePicker的Angular指令版本:

KendoUI DatePicker validation when multiple date fields are on a page

任何帮助,将不胜感激.

解决方法

这就是我使用自己的模板和验证实现基于KEndo的Datepicker的自定义Datepicker的方法:

appModule.directive('nemoDatePicker',function () {
    return {
        restrict: 'E',require: '?ngModel',scope: {
            'name': '@','text': '@','ngModel': '=',},templateUrl: '/App/nemo/nemoDatePicker.html',link: function (scope,element,attrs,ngModel) {
        },controller: function ($scope) {
            $scope.error = function (name) {
                var s = $scope.editor[name];
                return $scope.editor.$invalid && $scope.editor.$dirty ? "has-error" : "";
            };
        }
    };
});


appModule.directive('kendoDateValidator',['$sce',function ($sce) {
    return {
        restrict: 'A',// only activate on element attribute
        require: '?ngModel',// get a hold of NgModelController
        link: function (scope,ngModel) {
            if (!ngModel) return; // do nothing if no ng-model
            
            // Specify how UI should be updated
            ngModel.$render = function () {
                //element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));
            };

            // Listen for change events to enable binding
            element.on('blur keyup change',function () {
                scope.$evalAsync(read);
            });

            read(); // initialize

            function read() {
                
                if (!element.val()) return;
                const startTime = performance.now();
                if (!isDate(element.val()))
                {
                    //console.log(element.val() + " bad");
                    ngModel.$setValidity('date',false);
                }
                else
                {
                    //console.log(element.val() + " good");
                    ngModel.$setValidity('date',true);
                }
                const duration = performance.now() - startTime;
                //console.log("read took " + duration + " ms");
            }

            function isDate(x) {
                var d = kendo.parseDate(x,"dd/MM/yyyy");
                return d instanceof Date;
            };

        }
    };
}]);
<div ng-form="editor">
    <div class="Box" ng-class="error(name)">
        <div class="SubTitle">
            <div class="DirectiveIcon1">
                <span class="glyphicon glyphicon-calendar"></span>
            </div>
            {{text}}
        </div>
        <input kendo-date-picker
               culture="he-IL"
               k-format="'dd/MM/yyyy'"
               id="{{name}}"
               name="{{name}}"
               ng-model="ngModel"
               required 
               kendo-Date-Validator
               class="form-control"/>
        <div>
            <div>
                <span class="help-block" ng-show="editor.$error.required && editor.$dirty">??? ????</span>
                <span class="help-block" ng-show="editor.$error.date">?? ????? ?????</span>
            </div>
        </div>
    </div>
</div>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读