libs/cbi: add field validation handlers
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 25 Apr 2010 23:50:25 +0000 (23:50 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 25 Apr 2010 23:50:25 +0000 (23:50 +0000)
libs/cbi/htdocs/luci-static/resources/cbi.js

index 9af2b0d..200016d 100644 (file)
@@ -2,15 +2,13 @@
        LuCI - Lua Configuration Interface
 
        Copyright 2008 Steven Barth <steven@midlink.org>
        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
 
        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 = [];
 */
 
 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);
+       }
+}
+