正在验证日期字段's使用angularJS
Validating the date field's using angularJS
我在项目中使用angularJS进行验证,我知道要验证正常字段。现在,通过传入name属性的参数,我得到了日期字段。在某些情况下,用户可以单击"添加日期"按钮添加更多日期。因此,在本例中,我通过传递带有name属性的参数来编写代码。因此,我无法获得要验证的名称字段。
即使用户添加了更多的日期字段来输入,我也希望验证所有的日期字段。
这是我正在使用的代码,
<div class="col-md-12 col-sm-12 col-xs-12 table-responsive">
<table class="table table-striped table-hover">
<tr ng-repeat="dates in hall.hallDates">
<td>
<div class="col-md-6 col-sm-6 p-0 p-t-10">
Select Date<span style="color: red">*</span>
</div>
<div class="col-md-6 col-sm-6 p-0 p-t-10">
<input type="text" ng-model="dates.hallDate"
name="hallDate{{ $index }}" class="form-control"
placeholder="DD-MM-YYYY" mydatepicker readonly="true"
ng-class="{ validateFields: submitted && createHallForm.date.$invalid }"
required>
<div ng-show="submitted && createHallForm.date.$invalid">
<span class="validateFields" ng-show="createHallForm.date.$error.required" >Please enter the date</span>
</div>
</div>
如何获取带参数的名称字段以对n个字段进行验证?有人能帮我知道这件事吗?
您可能正在运行Angular 1.2或更低版本。在这些版本中,不能动态设置元素的name
属性。您可以通过查看渲染的DOM来确认这一点,并且仍然可以看到渲染后的name="hallDate{{ $index }}"
。
请参阅此处的相关GitHub问题:https://github.com/angular/angular.js/issues/1404
解决方案1升级至1.3.x
解决方案2使用上面提到的GitHub问题中发布的以下解决方法。
// Your app module
angular.module('app', [])
// Workaround for bug #1404
// https://github.com/angular/angular.js/issues/1404
// Source: http://plnkr.co/edit/hSMzWC?p=preview
.config(['$provide', function($provide) {
$provide.decorator('ngModelDirective', ['$delegate', function($delegate) {
var ngModel = $delegate[0], controller = ngModel.controller;
ngModel.controller = ['$scope', '$element', '$attrs', '$injector', function(scope, element, attrs, $injector) {
var $interpolate = $injector.get('$interpolate');
attrs.$set('name', $interpolate(attrs.name || '')(scope));
$injector.invoke(controller, this, {
'$scope': scope,
'$element': element,
'$attrs': attrs
});
}];
return $delegate;
}]);
$provide.decorator('formDirective', ['$delegate', function($delegate) {
var form = $delegate[0], controller = form.controller;
form.controller = ['$scope', '$element', '$attrs', '$injector', function(scope, element, attrs, $injector) {
var $interpolate = $injector.get('$interpolate');
attrs.$set('name', $interpolate(attrs.name || attrs.ngForm || '')(scope));
$injector.invoke(controller, this, {
'$scope': scope,
'$element': element,
'$attrs': attrs
});
}];
return $delegate;
}]);
}]);
相关文章:
- 使用AngularJS中的筛选器更新给定的表
- 使用angularjs验证文本框中的电子邮件
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 如何使用AngularJs禁用ng选项中的选项
- 我无法使用angularJs($http)访问服务器
- 如何更改<选择>使用angularJS从控制器获得的值
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 使用AngularJS中的UI路由器将状态重定向到默认子状态
- 使用angularjs中的rest调用通过id获取数据
- 显示&作为&在jsp中使用angularjs而不使用ng-bind-html
- 使用AngularJs时,如何在img标记具有src-attr时设置数据src
- 使用AngularJS从时间戳中获取工作日
- 使用angularjs ng Show/ng hide显示和隐藏不同的内容
- 使用angularjs列出JSON中的字段值
- 如何在范围值更改时使用 angularJs 更新 UI
- 如何使用AngularJS显示按钮或锚标记值
- 如何使用angularjs在iframe中嵌入来自数据库的视频链接
- 如何使用AngularJS在点击身体内部任何位置时显示弹出窗口
- 如何使用angularjs构建交互式滚动着陆页
- 如何使用angularJS从json的对象数组中显示和计数实体