From: Jo-Philipp Wich Date: Sun, 25 Apr 2010 23:50:25 +0000 (+0000) Subject: libs/cbi: add field validation handlers X-Git-Tag: 0.10.0~693 X-Git-Url: http://git.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=dcf53bd886f6a0ee34c02d4ed9d7b6cc85904a5c libs/cbi: add field validation handlers --- diff --git a/libs/cbi/htdocs/luci-static/resources/cbi.js b/libs/cbi/htdocs/luci-static/resources/cbi.js index 9af2b0def2..200016d6e6 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 - Copyright 2008-2009 Jo-Philipp Wich + Copyright 2008-2010 Jo-Philipp Wich 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); + } +} +