-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathValidator.js
38 lines (37 loc) · 1.15 KB
/
Validator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Validator = {};
Validator.addValidators = function () {
$('select, input').each(Validator.addValidator);
}
Validator.addValidator = function (index, el) { // This function is called in $().each(). The first arg will be an index. Though we dont need it
$el = $(el);
// Add function by tag name.
switch ($el.prop('tagName')) {
case 'INPUT':
switch ($el.attr('type')) {
case 'number': $el.change(Validator.validateNumber);
}
break;
case 'SELECT':
$el.change(Validator.validateSelection); break;
}
}
Validator.validateNumber = function () {
var $this = $(this);
var val = parseInt($this.val(),10);
if (isNaN(val)) val = $this.data('default');
var min = parseInt($this.attr('min')) || 0;
var max = parseInt($this.attr('max')) || 0;
if (val < min) val = min;
else if (val > max) val = max;
$this.val(val);
}
Validator.validateSelection = function () {
$this = $(this);
var val = $this.val();
var invalid = true;
var validOptions = $this.children().map(function(i,o){return $(o).val();});
for (var i = 0; i < validOptions.length && invalid; i++) {
if (val === validOptions[i]) invalid = false;
}
if (invalid) $this.val($this.data('default'));
}