luci-base: validation.js: count byte- instead of character length of strings
Fixes: #4055 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
01d5d5f929
commit
9a41673488
1 changed files with 9 additions and 6 deletions
|
@ -1,6 +1,10 @@
|
|||
'use strict';
|
||||
'require baseclass';
|
||||
|
||||
function bytelen(x) {
|
||||
return new Blob([x]).size;
|
||||
}
|
||||
|
||||
var Validator = baseclass.extend({
|
||||
__name__: 'Validation',
|
||||
|
||||
|
@ -421,24 +425,23 @@ var ValidatorFactory = baseclass.extend({
|
|||
},
|
||||
|
||||
length: function(len) {
|
||||
var val = '' + this.value;
|
||||
return this.assert(val.length == +len,
|
||||
return this.assert(bytelen(this.value) == +len,
|
||||
_('value with %d characters').format(len));
|
||||
},
|
||||
|
||||
rangelength: function(min, max) {
|
||||
var val = '' + this.value;
|
||||
return this.assert((val.length >= +min) && (val.length <= +max),
|
||||
var len = bytelen(this.value);
|
||||
return this.assert((len >= +min) && (len <= +max),
|
||||
_('value between %d and %d characters').format(min, max));
|
||||
},
|
||||
|
||||
minlength: function(min) {
|
||||
return this.assert((''+this.value).length >= +min,
|
||||
return this.assert(bytelen(this.value) >= +min,
|
||||
_('value with at least %d characters').format(min));
|
||||
},
|
||||
|
||||
maxlength: function(max) {
|
||||
return this.assert((''+this.value).length <= +max,
|
||||
return this.assert(bytelen(this.value) <= +max,
|
||||
_('value with at most %d characters').format(max));
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in a new issue