summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2010-04-25 23:50:25 +0000
committerJo-Philipp Wich <jow@openwrt.org>2010-04-25 23:50:25 +0000
commitdcf53bd886f6a0ee34c02d4ed9d7b6cc85904a5c (patch)
tree021c9c1e254a2305ea236a375accb4fe63791fc5
parent5879873fca3fdbfbbb3ad4e5c59fd2ba4decadc3 (diff)
libs/cbi: add field validation handlers
-rw-r--r--libs/cbi/htdocs/luci-static/resources/cbi.js45
1 files changed, 42 insertions, 3 deletions
diff --git a/libs/cbi/htdocs/luci-static/resources/cbi.js b/libs/cbi/htdocs/luci-static/resources/cbi.js
index 9af2b0def..200016d6e 100644
--- a/libs/cbi/htdocs/luci-static/resources/cbi.js
+++ b/libs/cbi/htdocs/luci-static/resources/cbi.js
@@ -2,15 +2,13 @@
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008-2009 Jo-Philipp Wich <xm@subsignal.org>
+ Copyright 2008-2010 Jo-Philipp Wich <xm@subsignal.org>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
-
- $Id$
*/
var cbi_d = [];
@@ -448,3 +446,44 @@ function cbi_t_update() {
}
}
+
+function cbi_validate_disable_form(form, onoff)
+{
+ for( var i = 0; i < form.elements.length; i++ )
+ {
+ if( form.elements[i].type == 'submit' )
+ {
+ form.elements[i].disabled = onoff;
+ break;
+ }
+ }
+}
+
+function cbi_validate_field(type, optional, field)
+{
+ var vldcb = cbi_validators[type];
+ if( vldcb )
+ {
+ var value = (field.options) ? field.options[field.options.selectedIndex].value : field.value;
+
+ if( ((value.length == 0) && optional) || vldcb(value) )
+ {
+ // OK
+ field.className = field.className.replace(/ cbi-input-invalid/g, '');
+ cbi_validate_disable_form(field.form, false);
+ }
+ else
+ {
+ // Invalid
+ field.className += ' cbi-input-invalid';
+ cbi_validate_disable_form(field.form, true);
+ }
+ }
+ else
+ {
+ // OK
+ field.className = field.className.replace(/ cbi-input-invalid/g, '');
+ cbi_validate_disable_form(field.form, false);
+ }
+}
+