From d892005e7fcf957da83dd4cced22d92c39b5b3f9 Mon Sep 17 00:00:00 2001 From: Denis Flaven Date: Sun, 5 Sep 2010 13:20:09 +0000 Subject: [PATCH] - Fixed Trac #224: properly validate non-mandatory integer fields. SVN:trunk[768] --- application/cmdbabstract.class.inc.php | 7 ++++++- js/forms-json-utils.js | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/application/cmdbabstract.class.inc.php b/application/cmdbabstract.class.inc.php index 183ab29e7..3fe26a162 100644 --- a/application/cmdbabstract.class.inc.php +++ b/application/cmdbabstract.class.inc.php @@ -1078,7 +1078,12 @@ abstract class cmdbAbstractObject extends CMDBObject $sPattern = addslashes($oAttDef->GetValidationPattern()); //'^([0-9]+)$'; if (!empty($aEventsList)) { - $oPage->add_ready_script("$('#$iId').bind('".implode(' ', $aEventsList)."', function(evt, sFormId) { return ValidateField('$iId', '$sPattern', $bMandatory, sFormId) } );"); // Bind to a custom event: validate + $sNullValue = $oAttDef->GetNullValue(); + if (!is_numeric($sNullValue)) + { + $sNullValue = "'$sNullValue'"; // Add quotes to turn this into a JS string if it's not a number + } + $oPage->add_ready_script("$('#$iId').bind('".implode(' ', $aEventsList)."', function(evt, sFormId) { return ValidateField('$iId', '$sPattern', $bMandatory, sFormId, $sNullValue) } );"); // Bind to a custom event: validate } $aDependencies = MetaModel::GetDependentAttributes($sClass, $sAttCode); // List of attributes that depend on the current one if (count($aDependencies) > 0) diff --git a/js/forms-json-utils.js b/js/forms-json-utils.js index cad353a86..6a82e0a84 100644 --- a/js/forms-json-utils.js +++ b/js/forms-json-utils.js @@ -150,15 +150,15 @@ function CheckFields(sFormId, bDisplayAlert) return (oFormErrors['err_'+sFormId] == 0); // If no error, submit the form } -function ValidateField(sFieldId, sPattern, bMandatory, sFormId) +function ValidateField(sFieldId, sPattern, bMandatory, sFormId, nullValue) { var bValid = true; var currentVal = $('#'+sFieldId).val(); - if (bMandatory && ((currentVal == '') || (currentVal == 0) || (currentVal == '[]'))) + if (bMandatory && (currentVal == nullValue)) { bValid = false; } - else if ((currentVal == '') || (currentVal == 0) || (currentVal == '[]')) + else if (currentVal == nullValue) { // An empty field is Ok... bValid = true;