libs/web: implement minlength(), maxlength() and rangelength() datatypes

This commit is contained in:
Jo-Philipp Wich 2012-06-25 09:51:59 +00:00
parent 66eec98a57
commit 6780f757d6
2 changed files with 62 additions and 1 deletions

View file

@ -216,6 +216,33 @@ var cbi_validators = {
return false;
},
'rangelength': function(min, max)
{
var val = '' + this;
if (!isNaN(min) && !isNaN(max))
return ((val.length >= min) && (val.length <= max));
return false;
},
'minlength': function(min)
{
var val = '' + this;
if (!isNaN(min))
return (val.length >= min);
return false;
},
'maxlength': function(max)
{
var val = '' + this;
if (!isNaN(max))
return (val.length <= max);
return false;
},
'or': function()
{
for (var i = 0; i < arguments.length; i += 2)

View file

@ -17,7 +17,7 @@ local fs = require "nixio.fs"
local ip = require "luci.ip"
local math = require "math"
local util = require "luci.util"
local tonumber, type, unpack, select = tonumber, type, unpack, select
local tonumber, tostring, type, unpack, select = tonumber, tostring, type, unpack, select
module "luci.cbi.datatypes"
@ -306,6 +306,40 @@ function max(val, max)
return false
end
function rangelength(val, min, max)
val = tostring(val)
min = tonumber(min)
max = tonumber(max)
if val ~= nil and min ~= nil and max ~= nil then
return ((#val >= min) and (#val <= max))
end
return false
end
function minlength(val, min)
val = tostring(val)
min = tonumber(min)
if val ~= nil and min ~= nil then
return (#val >= min)
end
return false
end
function maxlength(val, max)
val = tostring(val)
max = tonumber(max)
if val ~= nil and max ~= nil then
return (#val <= max)
end
return false
end
function phonedigit(val)
return (val:match("^[0-9\*#]+$") ~= nil)
end