Skip to content
This repository was archived by the owner on Jul 1, 2020. It is now read-only.

Commit b1a6095

Browse files
committed
Fixed issue #26 dynamic form and #28
- Added sample of issue #26 - Fixed issue #26 - validation of dynamic forms inside ng-repeat - Fixed again issue #28 - unbind all 'blur' in cancelValidation() might affect other modules.
1 parent 2c1e5d6 commit b1a6095

15 files changed

+190
-51
lines changed

bower.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ghiscoding.angular-validation",
3-
"version": "1.3.19",
3+
"version": "1.3.20",
44
"authors": [
55
"Ghislain B."
66
],
@@ -30,6 +30,10 @@
3030
"tests",
3131
"more-examples",
3232
"templates",
33+
"app.js",
34+
"changelog.txt",
35+
"index.html",
36+
"gulpfile.js",
3337
"vendors",
3438
"README.md"
3539
],

changelog.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ Angular-Validation change logs
2020
1.3.16 (2015-04-09) Accept Merge #3 Fixed removeFromValidationSummary to also remove from 'local' array
2121
1.3.17 (2015-04-11) Added global `$scope.$validationOptions` object, for now only has the `debounce` property that be used by both the Directive and Service.
2222
1.3.18 (2015-04-19) Fixed issue #20 - Error messages shown on submit are non-understandable, this was fixed using $translate promises instead of $translate.instant(). Fixed a few error display on the validationSummary() and checkFormValidity(). Also merged #27 to add Russian
23-
1.3.19 (2015-04-20) Fixed issue #28 - unbind all 'blur' in cancelValidation() might affect other modules
23+
1.3.19 (2015-04-20) Fixed issue #28 - unbind all 'blur' in cancelValidation() might affect other modules
24+
1.3.20 (2015-04-21) Fixed issue #26 - validation of forms inside ng-repeat (added sample `dynamicFormView` in `more-examples` folder). And again issue #28 - unbind all 'blur' in cancelValidation() might affect other modules.

dist/angular-validation.min.js

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

more-examples/dynamicForm-app.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
'use strict';
2+
3+
var app = angular.module('plunker', ['ui.bootstrap','ghiscoding.validation', 'pascalprecht.translate']);
4+
5+
app.config(['$translateProvider', function ($translateProvider) {
6+
$translateProvider.useStaticFilesLoader({
7+
prefix: '../locales/validation/',
8+
suffix: '.json'
9+
});
10+
11+
// load English ('en') table on startup
12+
$translateProvider.preferredLanguage('en');
13+
}]);
14+
15+
app.directive('formField',function(){
16+
return{
17+
restrict:'E',
18+
templateUrl:"dynamicFormView.html"
19+
}
20+
});
21+
22+
app.controller('MainCtrl', function($scope,validationService) {
23+
$scope.name = 'World';
24+
$scope.items={};
25+
$scope.items.item1={
26+
heading:"Item1",
27+
formName:"Form1"
28+
};
29+
$scope.items.item1.fields=[
30+
{
31+
name: 'firstName',
32+
label:'Enter First Name',
33+
validation:"required"
34+
},
35+
{
36+
name: 'lastName',
37+
label: 'Enter Last Name',
38+
validation:"required"
39+
}
40+
];
41+
$scope.items.item2={
42+
heading:"Item2",
43+
formName:"Form2"
44+
};
45+
$scope.items.item2.fields=[
46+
{
47+
name: 'email',
48+
label:'Enter Email Id',
49+
validation:"required"
50+
},
51+
{
52+
name: 'phoneNo',
53+
label: 'Enter Phone Number',
54+
validation:"required"
55+
}
56+
];
57+
58+
$scope.validate=function(){
59+
for(var key in $scope.items){
60+
var formName=$scope.items[key].formName;
61+
var form = angular.element(document.querySelector('[name="'+formName+'"]'));
62+
var childScope = form.scope();
63+
console.debug(childScope[formName]);
64+
if(new validationService().checkFormValidity(childScope[formName]))
65+
alert("form "+formName+" is valid");
66+
else
67+
alert("form "+formName+" is invalid");
68+
}
69+
};
70+
});

more-examples/dynamicFormIndex.html

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<!DOCTYPE html>
2+
<html ng-app="plunker">
3+
4+
<head>
5+
<meta charset="utf-8" />
6+
<title>AngularJS Plunker</title>
7+
<script>document.write('<base href="' + document.location + '" />');</script>
8+
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
9+
<link rel="stylesheet" href="../style.css">
10+
11+
<!-- external librairies CDN -->
12+
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js"></script>
13+
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-route.js"></script>
14+
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.12.1.js"></script>
15+
16+
<!-- angular-translate -->
17+
<!-- Visit Angular-Translate https://github.com/PascalPrecht/angular-translate -->
18+
<script src="../vendors/angular-translate/angular-translate.min.js"></script>
19+
<script src="../vendors/angular-translate/angular-translate-loader-static-files.min.js"></script>
20+
21+
<!-- Angular-Validation -->
22+
<!--<script type="text/javascript" src="../dist/angular-validation.min.js"></script>-->
23+
<script type="text/javascript" src="../src/validation-directive.js"></script>
24+
<script type="text/javascript" src="../src/validation-service.js"></script>
25+
<script type="text/javascript" src="../src/validation-common.js"></script>
26+
<script type="text/javascript" src="../src/validation-rules.js"></script>
27+
28+
<script src="dynamicForm-app.js"></script>
29+
</head>
30+
31+
<body ng-controller="MainCtrl">
32+
<h3>Form Validation (with dynamic form and fields)</h3>
33+
<tabset>
34+
<tab ng-repeat="tab in items" heading="{{tab.heading}}" >
35+
<form name="{{tab.formName}}" novalidate>
36+
<div ng-repeat="field in tab.fields" >
37+
<form-field></form-field>
38+
</div>
39+
</form>
40+
</tab>
41+
</tabset>
42+
<button name="validateForms" value="Validate" ng-click="validate()">Validate</button>
43+
</body>
44+
45+
</html>

more-examples/dynamicFormView.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<label class="topMargin leftColumn" for="{{field.name}}">{{field.label}} : </label>
2+
<input class="topMargin leftMargin" validation="{{field.validation}}" ng-model="values[field.name]" name="{{field.name}}" type="text">

more-examples/dynamic-app.js renamed to more-examples/dynamicInput-app.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var myApp = angular.module('myApp', ['ngRoute', 'pascalprecht.translate', 'ghisc
44

55
myApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
66
$routeProvider.when('/dynamic', {
7-
templateUrl: 'dynamicForm.html',
7+
templateUrl: 'dynamicInputTemplate.html',
88
controller: 'CtrlDynamic'
99
});
1010
$routeProvider.otherwise({
@@ -27,19 +27,23 @@ myApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $
2727
$translate.use(key);
2828
};
2929

30-
$scope.data = [{
30+
$scope.data = [
31+
{
3132
'name': "abc",
3233
'title': 'first',
3334
'validate':"required"
34-
}, {
35+
},
36+
{
3537
'name': "xyz",
3638
'title': 'second',
3739
'validate':"max_len:12|required"
38-
}, {
40+
},
41+
{
3942
'name': "std",
4043
'title': 'third',
4144
'validate':"max_len:22|required"
42-
}];
45+
}
46+
];
4347
}])
4448
.directive('dyninp', [ function () {
4549
return {

more-examples/dynamicIndex.html renamed to more-examples/dynamicInputIndex.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,14 @@ <h3 class="text-info">{{'CHANGE_LANGUAGE' | translate}}</h3>
3232
<script src="../vendors/angular-translate/angular-translate-loader-static-files.min.js"></script>
3333

3434
<!-- Angular-Validation -->
35-
<script type="text/javascript" src="../dist/angular-validation.min.js"></script>
35+
<!--<script type="text/javascript" src="../dist/angular-validation.min.js"></script>-->
36+
<script type="text/javascript" src="../src/validation-directive.js"></script>
37+
<script type="text/javascript" src="../src/validation-service.js"></script>
38+
<script type="text/javascript" src="../src/validation-common.js"></script>
39+
<script type="text/javascript" src="../src/validation-rules.js"></script>
3640

3741
<!-- my application -->
38-
<script type="text/javascript" src="dynamic-app.js"></script>
42+
<script type="text/javascript" src="dynamicInput-app.js"></script>
3943
</div>
4044
</body>
4145
</html>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ghiscoding.angular-validation",
3-
"version": "1.3.19",
3+
"version": "1.3.20",
44
"author": "Ghislain B.",
55
"description": "Angular-Validation Directive and Service (ghiscoding)",
66
"main": "app.js",

0 commit comments

Comments
 (0)