|
312 | 312 | var $parent = $input.parent(), |
313 | 313 | $errorSpan = $parent.find('span[class='+config.errorMessageClass+']'); |
314 | 314 | if ($errorSpan.length > 0) { |
315 | | - $errorSpan.append(', '+$input.valAttr('current-error')); |
| 315 | + $errorSpan.text(', '+$input.valAttr('current-error')); |
316 | 316 | } else { |
317 | 317 | $parent.append('<span class="'+config.errorMessageClass+'">' + $input.valAttr('current-error') + '</span>'); |
318 | 318 | } |
|
697 | 697 | var validator = $.formUtils.validators[rule]; |
698 | 698 |
|
699 | 699 | if( validator && typeof validator['validatorFunction'] == 'function' ) { |
| 700 | + // special change of element for checkbox_group rule |
| 701 | + if ( rule == 'validate_checkbox_group' ) { |
| 702 | + // set element to first in group, so error msg is set only once |
| 703 | + $element = $("[name='"+$element.attr('name')+"']:eq(0)"); |
| 704 | + } |
700 | 705 |
|
701 | 706 | var isValid = validator.validatorFunction(value, $element, config, language, $form); |
702 | 707 |
|
|
836 | 841 | * @param $rangeAllowed str; (1-2, min1, max2) |
837 | 842 | * @return array |
838 | 843 | */ |
839 | | - numericRangeCheck : function($value, $rangeAllowed) |
| 844 | + numericRangeCheck : function(value, rangeAllowed) |
840 | 845 | { |
841 | 846 | // split by dash |
842 | | - var range = $.split($rangeAllowed, '-'); |
| 847 | + var range = $.split(rangeAllowed, '-'); |
| 848 | + // min or max |
| 849 | + var minmax = parseInt(rangeAllowed.substr(3),10) |
843 | 850 | // range ? |
844 | | - if (range.length == 2 && ($value < parseInt(range[0],10) || $value > parseInt(range[1],10) )) |
845 | | - { // value is out of range |
846 | | - return [ "out", range[0], range[1] ] ; |
847 | | - } |
848 | | - else if ($rangeAllowed.indexOf('min') === 0) // min |
849 | | - { // check if above min |
850 | | - var minQty = parseInt($rangeAllowed.substr(3),10); |
851 | | - if($value < minQty) { return [ "min", minQty ] ; } |
852 | | - } |
853 | | - else if ($rangeAllowed.indexOf('max') === 0) // max |
854 | | - { var maxQty = parseInt($rangeAllowed.substr(3),10); |
855 | | - if($value > maxQty) { return [ "max", maxQty ] ; } |
856 | | - } |
857 | | - else { return "ok"} // value is in allowed range |
| 851 | + if (range.length == 2 && (value < parseInt(range[0],10) || value > parseInt(range[1],10) ) ) |
| 852 | + { return [ "out", range[0], range[1] ] ; } // value is out of range |
| 853 | + else if (rangeAllowed.indexOf('min') === 0 && (value < minmax ) ) // min |
| 854 | + { return ["min", minmax]; } // value is below min |
| 855 | + else if (rangeAllowed.indexOf('max') === 0 && (value > minmax ) ) // max |
| 856 | + { return ["max", minmax]; } // value is above max |
| 857 | + else { return [ "ok" ] ; } // value is in allowed range |
858 | 858 | }, |
859 | 859 |
|
860 | 860 |
|
|
1394 | 1394 | * data-validation-error-msg="chose min 1, max of 2 checkboxes" |
1395 | 1395 | */ |
1396 | 1396 |
|
1397 | | - /* formUtils global var to hold string of checkboxes that were prev checked by validator, |
1398 | | - * to prevent wasted duplication when multiple checkboxes have call to same validator |
1399 | | - */ |
1400 | | - $.formUtils._checkboxGroups = ''; |
1401 | | - |
1402 | 1397 | $.formUtils.addValidator({ |
1403 | 1398 | name : 'checkbox_group', |
1404 | | - validatorFunction : function(val, $el, config, lang, form) |
1405 | | - { // set return var |
| 1399 | + validatorFunction : function(val, $el, config, lang, $form) |
| 1400 | + { // preset return var |
1406 | 1401 | var checkResult = true; |
1407 | 1402 | // get name of element. since it is a checkbox group, all checkboxes will have same name |
1408 | 1403 | var elname = $el.attr('name'); |
1409 | | - // check if we have already checked this group |
1410 | | - // global var "_checkboxGroups" |
1411 | | - // if element name is not found in global var, then do the check |
1412 | | - if ($.formUtils._checkboxGroups.indexOf(elname) == -1 ) |
1413 | | - { // get count of checked checkboxes with this name |
1414 | | - var checkedCount = $("input[type=checkbox][name^='"+elname+"']:checked", form).length; |
1415 | | - // get el attr that specs qty required / allowed |
1416 | | - var qtyAllowed = $el.valAttr('qty'); |
1417 | | - if (qtyAllowed == undefined) { |
1418 | | - var elementType = $el.get(0).nodeName; |
1419 | | - alert('Attribute "data-validation-qty" is missing from '+elementType+' named '+$el.attr('name')); |
1420 | | - } |
1421 | | - // call Utility function to check if count is above min, below max, within range etc. |
1422 | | - var qtyCheckResults = $.formUtils.numericRangeCheck(checkedCount, qtyAllowed) ; |
1423 | | - // results will be array, [0]=result str, [1]=qty int |
1424 | | - switch(qtyCheckResults[0] ) |
1425 | | - { // outside allowed range |
1426 | | - case "out": |
1427 | | - this.errorMessage = lang.groupCheckedRangeStart + qtyAllowed + lang.groupCheckedEnd; |
1428 | | - checkResult = false; |
1429 | | - break; |
1430 | | - // below min qty |
1431 | | - case "min": |
1432 | | - this.errorMessage = lang.groupCheckedTooFewStart + qtyCheckResults[1] + lang.groupCheckedEnd; |
1433 | | - checkResult = false; |
1434 | | - break; |
1435 | | - // above max qty |
1436 | | - case "max": |
1437 | | - this.errorMessage = lang.groupCheckedTooManyStart + qtyCheckResults[1] + lang.groupCheckedEnd; |
1438 | | - checkResult = false; |
1439 | | - break; |
1440 | | - // ok |
1441 | | - default: |
1442 | | - checkResult = true; |
1443 | | - } |
1444 | | - |
1445 | | - // add element name to global var so group won't be checked on subsequent calls |
1446 | | - $.formUtils._checkboxGroups += elname + ', '; |
| 1404 | + // get count of checked checkboxes with this name |
| 1405 | + var checkedCount = $("input[type=checkbox][name^='"+elname+"']:checked", $form).length; |
| 1406 | + // get el attr that specs qty required / allowed |
| 1407 | + var qtyAllowed = $el.valAttr('qty'); |
| 1408 | + if (qtyAllowed == undefined) { |
| 1409 | + var elementType = $el.get(0).nodeName; |
| 1410 | + alert('Attribute "data-validation-qty" is missing from '+elementType+' named '+$el.attr('name')); |
| 1411 | + } |
| 1412 | + // call Utility function to check if count is above min, below max, within range etc. |
| 1413 | + var qtyCheckResults = $.formUtils.numericRangeCheck(checkedCount, qtyAllowed) ; |
| 1414 | + // results will be array, [0]=result str, [1]=qty int |
| 1415 | + switch(qtyCheckResults[0] ) { |
| 1416 | + // outside allowed range |
| 1417 | + case "out": |
| 1418 | + this.errorMessage = lang.groupCheckedRangeStart + qtyAllowed + lang.groupCheckedEnd; |
| 1419 | + checkResult = false; |
| 1420 | + break; |
| 1421 | + // below min qty |
| 1422 | + case "min": |
| 1423 | + this.errorMessage = lang.groupCheckedTooFewStart + qtyCheckResults[1] + lang.groupCheckedEnd; |
| 1424 | + checkResult = false; |
| 1425 | + break; |
| 1426 | + // above max qty |
| 1427 | + case "max": |
| 1428 | + this.errorMessage = lang.groupCheckedTooManyStart + qtyCheckResults[1] + lang.groupCheckedEnd; |
| 1429 | + checkResult = false; |
| 1430 | + break; |
| 1431 | + // ok |
| 1432 | + default: |
| 1433 | + checkResult = true; |
1447 | 1434 | } |
1448 | 1435 |
|
1449 | 1436 | return checkResult; |
|
0 commit comments