From 670f4b1782b4937a0b518eb93b2e2eeea8b14d5d Mon Sep 17 00:00:00 2001 From: ntom Date: Thu, 7 Mar 2013 01:39:12 +0000 Subject: [PATCH] Update Form.Validator.Extras.js Bugfix to validate-reqchk-byname - not hiding error messages properly when one checkbox is unchecked, producing an eror underneath it, then another checkbox is checked, and the previous error doesn't go away. example: http://jsfiddle.net/aUFe4/1/ Update Form.Validator.Extras.js Bugfix to validate-reqchk-byname - not hiding error messages properly when one checkbox is unchecked, producing an eror underneath it, then another checkbox is checked, and the previous error doesn't go away. example: http://jsfiddle.net/aUFe4/1/ Added feature validate-enforce-onselect-value validate-enforce-onselect-value - enables the user to specify when a select value is selected, to enforce / ignore fields remove some unessential code + tab indent cleanup remove some unessential code + tab indent cleanup --- Source/Forms/Form.Validator.Extras.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Source/Forms/Form.Validator.Extras.js b/Source/Forms/Form.Validator.Extras.js index 9fbb3052..ee4c2297 100644 --- a/Source/Forms/Form.Validator.Extras.js +++ b/Source/Forms/Form.Validator.Extras.js @@ -52,6 +52,23 @@ Form.Validator.addAllThese([ return true; } }], + + ['validate-enforce-onselect-value', { + test: function(element, props){ + if( !props.value ) return true; + var fv = element.getParent('form').retrieve('validator'); + if (!fv) return true; + (props.toEnforce || document.id(props.enforceChildrenOf).getElements('input, select, textarea')).map(function(item){ + if (props.value == element.value){ + fv.enforceField(item); + } else { + fv.ignoreField(item); + fv.resetField(item); + } + }); + return true; + } + }], ['validate-nospace', { errorMsg: function(){ @@ -107,11 +124,14 @@ Form.Validator.addAllThese([ }, test: function(element, props){ var grpName = props.groupName || element.get('name'); - var oneCheckedItem = $$(document.getElementsByName(grpName)).some(function(item, index){ + var grpNameEls = $$('[name=' + grpName +']'); + var oneCheckedItem = grpNameEls.some(function(item, index){ return item.checked; }); var fv = element.getParent('form').retrieve('validator'); - if (oneCheckedItem && fv) fv.resetField(element); + if (oneCheckedItem && fv) { + grpNameEls.each(function(item, index) { fv.resetField(item); }); + } return oneCheckedItem; } }],