diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2010-04-25 23:50:25 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2010-04-25 23:50:25 +0000 |
commit | dcf53bd886f6a0ee34c02d4ed9d7b6cc85904a5c (patch) | |
tree | 021c9c1e254a2305ea236a375accb4fe63791fc5 | |
parent | 5879873fca3fdbfbbb3ad4e5c59fd2ba4decadc3 (diff) |
libs/cbi: add field validation handlers
-rw-r--r-- | libs/cbi/htdocs/luci-static/resources/cbi.js | 45 |
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); + } +} + |