Skip to content

Commit a8b1568

Browse files
committed
improve code and example, remove field email type and equal validation, update field.path.validate, add get_errors method
1 parent b72b980 commit a8b1568

File tree

13 files changed

+206
-110
lines changed

13 files changed

+206
-110
lines changed

examples/angularjs/app.js

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@
1717
var validator = new Validator({
1818
username: {required: true, length: {max: 11, min: 6}},
1919
password: {required: true, length: {max: 11, min: 6}},
20-
confirm: {equal: 'password'},
21-
email: {required: true, type: 'email'},
20+
confirm: {required: true},
21+
email: {required: true},
2222
sex: {required: true, enum: ['男', '女', '保密']},
2323
phone: {required: true, type: Number, length: 11},
2424
})
2525

2626
var messages = validator.messages({
2727
username: {required: '用户名是必须的', length: {max: '用户名长度超过11', min: '用户名长度小于6'}},
2828
password: {required: '密码是必须的', length: {max: '密码长度超过11', min: '密码长度小于6'}},
29-
confirm: {equal: '确认密码必须和密码保持一致'},
30-
email: {required: 'email是必须的', type: 'email格式不正确'},
29+
confirm: {required: '确认密码是必须的'},
30+
email: {required: 'email是必须的'},
3131
sex: {required: '性别是必须的', enum: '性别输入值不在限定范围之内'},
3232
phone: {required: '手机号码是必须的', type: '手机号码值类型错误', length: '手机号码长度必须为11'}
3333
})
@@ -41,7 +41,7 @@
4141
validator.check_one('username')
4242
}
4343

44-
var request = superagent
44+
var request = window.superagent
4545

4646
validator.path('username').message.set(function(err) {
4747
var username = $scope.view_model.username
@@ -87,29 +87,57 @@
8787
})
8888
})
8989

90-
validator.path('username').validate(function(field, username, done) {
90+
validator.path('username').validate(function (field, username, done) {
9191
request('/username')
9292
.query({username: username})
9393
.end((err, res) => {
94+
var error = '用户名已存在'
95+
9496
if (err) {
95-
done(err, field)
97+
done(error, field)
9698
return
9799
};
100+
98101
done()
99102
})
100-
}, '用户名已存在')
103+
})
101104

102-
validator.path('phone').validate(function(field, phone, done) {
105+
validator.path('phone').validate(function (field, phone, done) {
103106
request('/phone')
104107
.query({phone: phone})
105108
.end((err, res) => {
109+
var error = '手机号已存在'
110+
106111
if (err) {
107-
done(err, field)
112+
done(error, field)
108113
return
109114
};
115+
110116
done()
111117
})
112-
}, '手机号已存在')
118+
})
119+
120+
validator.path('confirm').validate(function (field, confirm, done) {
121+
var password = validator.schema.password.value
122+
var error = '确认密码必须和密码保持一致'
123+
124+
if (password !== confirm) {
125+
return done(error, field)
126+
}
127+
128+
done()
129+
})
130+
131+
validator.path('email').validate(function (field, email, done) {
132+
var error = 'email格式不正确'
133+
var _validator = window.validator // validator.js lib
134+
135+
if (!_validator.isEmail(email)) {
136+
return done(error, field)
137+
}
138+
139+
done()
140+
})
113141

114142
validator.get(function (field) {
115143
return $scope[field]

examples/angularjs/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
</style>
2020
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.6/angular.min.js"></script>
2121
<script src="index.js"></script>
22+
<script src="https://cdnjs.cloudflare.com/ajax/libs/validator/9.0.0/validator.min.js"></script>
2223
<script src="https://cdnjs.cloudflare.com/ajax/libs/superagent/3.6.3/superagent.min.js"></script>
23-
<script src="examples/angularjs/app.js"></script>
2424
</head>
2525
<body>
2626
<div class="app" ng-app="app">
@@ -94,5 +94,6 @@
9494

9595
</div>
9696
</div>
97+
<script src="examples/angularjs/app.js"></script>
9798
</body>
9899
</html>

examples/angularjs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"karma-chrome-launcher": "^2.2.0",
1717
"karma-jasmine": "^1.1.0",
1818
"karma-junit-reporter": "^1.2.0",
19+
"express": "^4.15.4",
1920
"protractor": "^5.1.2"
2021
}
2122
}

examples/base/app.js

Lines changed: 74 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,107 @@
11
(function() {
2+
var Validator = window.Validator
3+
24
var validator = new Validator({
35
username: {required: true, length: {max: 11, min: 6}},
46
password: {required: true, length: {max: 11, min: 6}},
5-
confirm: {equal: 'password'},
6-
email: {required: true, type: 'email'},
7+
confirm: {required: true},
8+
email: {required: true},
79
sex: {required: true, enum: ['男', '女', '保密']},
810
phone: {required: true, type: Number, length: 11},
911
})
1012

1113
var messages = validator.messages({
1214
username: {required: '用户名是必须的', length: {max: '用户名长度超过11', min: '用户名长度小于6'}},
1315
password: {required: '密码是必须的', length: {max: '密码长度超过11', min: '密码长度小于6'}},
14-
confirm: {equal: '确认密码必须和密码保持一致'},
15-
email: {required: 'email是必须的', type: 'email格式不正确'},
16+
confirm: {required: '确认密码是必须的'},
17+
email: {required: 'email是必须的'},
1618
sex: {required: '性别是必须的', enum: '性别输入值不在限定范围之内'},
1719
phone: {required: '手机号码是必须的', type: '手机号码值类型错误', length: '手机号码长度必须为11'}
1820
})
1921

20-
var request = superagent
22+
validator.path('username').get(function() {
23+
return document.getElementById('username').value
24+
})
25+
26+
validator.get(function (field) {
27+
return document.getElementById(field).value
28+
})
29+
30+
var request = window.superagent // superagent lib
2131
var form = document.getElementById('form')
2232

33+
validator.path('username').validate(function (field, username, done) {
34+
request('/username')
35+
.query({username: username})
36+
.end((err, res) => {
37+
var error = '用户名已存在'
38+
39+
if (err) {
40+
done(error, field)
41+
return
42+
};
43+
44+
done()
45+
})
46+
})
47+
48+
validator.path('phone').validate(function (field, phone, done) {
49+
request('/phone')
50+
.query({phone: phone})
51+
.end((err, res) => {
52+
var error = '手机号已存在'
53+
54+
if (err) {
55+
done(error, field)
56+
return
57+
};
58+
59+
done()
60+
})
61+
})
62+
63+
validator.path('confirm').validate(function (field, confirm, done) {
64+
var password = validator.schema.password.value
65+
var error = '确认密码必须和密码保持一致'
66+
67+
if (password !== confirm) {
68+
return done(error, field)
69+
}
70+
71+
done()
72+
})
73+
74+
validator.path('email').validate(function (field, email, done) {
75+
var error = 'email格式不正确'
76+
var _validator = window.validator // validator.js lib
77+
78+
if (!_validator.isEmail(email)) {
79+
return done(error, field)
80+
}
81+
82+
done()
83+
})
84+
2385
document.getElementById('username').addEventListener('blur', function () {
2486
validator.check_one('username')
2587
}, false)
2688

27-
function submit(event) {
89+
var handle_submit = function (event) {
2890
event.preventDefault()
2991
validator.check()
3092
}
3193

32-
form.addEventListener('submit', submit, false)
94+
form.addEventListener('submit', handle_submit, false)
3395

3496
validator.submit(function() {
35-
form.removeEventListener('submit', submit, false)
97+
form.removeEventListener('submit', handle_submit, false)
3698
document.getElementById('submit').click()
3799
})
38100

101+
validator.get_errors(function (messages) {
102+
console.log(messages)
103+
})
104+
39105
messages.set(function(err, field) {
40106
var item = validator.schema[field]
41107
var element = $('#' + field)
@@ -44,11 +110,6 @@
44110
element.addClass('form-control-danger')
45111
element.parent().parent().addClass('has-danger')
46112
element.siblings('.form-control-feedback').text(item.msg)
47-
} else {
48-
// set success style
49-
// element.addClass('form-control-success')
50-
// element.parent().parent().addClass('has-success')
51-
// element.siblings('.form-control-feedback').text('')
52113
}
53114
}).reset(function(field) {
54115
var element = $('#' + field)
@@ -74,32 +135,4 @@
74135
element.parent().parent().removeClass('has-warning')
75136
element.siblings('.form-control-feedback').text('message')
76137
})
77-
78-
validator.path('username').validate(function(field, username, done) {
79-
request('/username')
80-
.query({username: username})
81-
.end((err, res) => {
82-
if (err) {
83-
done(err, field)
84-
return
85-
};
86-
done()
87-
})
88-
}, '用户名已存在')
89-
90-
validator.path('phone').validate(function(field, phone, done) {
91-
request('/phone')
92-
.query({phone: phone})
93-
.end((err, res) => {
94-
if (err) {
95-
done(err, field)
96-
return
97-
};
98-
done()
99-
})
100-
}, '手机号已存在')
101-
102-
validator.path('username').get(function() {
103-
return document.getElementById('username').value.trim()
104-
})
105138
})()

examples/base/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@
9090

9191
</div>
9292
</div>
93-
<div id="mocha"></div>
9493
<script src="index.js"></script>
9594
<script src="http://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
9695
<script src="https://cdnjs.cloudflare.com/ajax/libs/superagent/3.6.3/superagent.min.js"></script>
96+
<script src="https://cdnjs.cloudflare.com/ajax/libs/validator/9.0.0/validator.min.js"></script>
9797
<script src="examples/base/app.js"></script>
9898
</body>
9999
</html>

examples/base/package.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,14 @@
88
"start": "node server.js"
99
},
1010
"author": "",
11-
"license": "ISC"
11+
"license": "ISC",
12+
"devDependencies": {
13+
"jasmine-core": "^2.8.0",
14+
"karma": "^1.7.1",
15+
"karma-chrome-launcher": "^2.2.0",
16+
"karma-jasmine": "^1.1.0",
17+
"karma-junit-reporter": "^1.2.0",
18+
"express": "^4.15.4",
19+
"protractor": "^5.1.2"
20+
}
1221
}

examples/react/.babelrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ "presets": ["react"] }

0 commit comments

Comments
 (0)