var validateSepDec = 'Too much decimal point.'; var validateNotValidNumber = 'The value isnt a valid number.'; var validateInsertMaxDecimalDigits = 'Too much digits after decimal point.'; var validateGroupSepInFract = 'The decimal place cant contain the separator of thousand.'; var validateMaxPrecision = 'Excelled maximum number of permitted figures.'; var validateGroupSepPosition = 'Number not valid, the position of the separator of thousand doesnt respect the settings of the userlanguage.'; var validateMinValue = 'The permitted minim value is'; var validateMaxValue = 'The permitted maximum value is'; var i18n = ''; var i18nGroupSize = ''; /*var i18nGroupSep = ''; var i18nDecimalSep = '';*/ var i18nGroupSep = '.'; var i18nDecimalSep = ','; function validateNumber(value,precision,scale,minValue,maxValue ){ //converto il valore in numerico js per verificare che sia effettivamente numerico var jsvalue = value.replaceAll('\\'+i18nGroupSep,''); jsvalue = jsvalue.replace(i18nDecimalSep,'.'); //controllo il numero di caratteri decimali if(value.lastIndexOf(i18nDecimalSep)!=value.indexOf(i18nDecimalSep)){ alert(validateSepDec); return false; } //controllo che sia convertibile in numero js if(isNaN(jsvalue)){ alert(validateNotValidNumber); return false; } //controllo la scala if(scale != 'undefined'){ var valDecIdx = -1; if(value.match('\\'+i18nDecimalSep)){ valDecIdx = value.lastIndexOf(i18nDecimalSep); var fract = value.substr(valDecIdx+1) if(fract.length>scale){ alert(validateInsertMaxDecimalDigits); return false; } if(fract.match('\\'+i18nGroupSep)){ alert(validateGroupSepInFract); return false; } } } //controllo la precisione if(precision != 'undefined'){ var absValue; var jsDecIdx = jsvalue.lastIndexOf('.'); if(jsDecIdx >-1){ absValue = Math.abs(jsvalue.substr(0,jsDecIdx)); }else{ absValue = Math.abs(jsvalue); } if((absValue.toString()).length > (precision-scale)){ alert(validateMaxPrecision); return false; } } //controllo se � rispettato il grouping size if(value.match('\\'+i18nGroupSep)){ var valDecIdx = value.lastIndexOf(i18nDecimalSep); var intValue = value.substr(0,valDecIdx).replace('+','').replace('-',''); var tokens = intValue.split(i18nGroupSep); var i; var token; for ((i=tokens.length-1);i>=0;i--){ token = tokens[i]; if(i>0){ if(token.length!=i18nGroupSize){ alert(validateGroupSepPosition); return false; } }else{ if(token.length>i18nGroupSize){ alert(validateGroupSepPosition); return false; } } } } //controllo il valore minimo if(minValue != 'undefined'){ var floatVal = parseFloat(jsvalue); if(floatValmaxValue){ alert(validateMaxValue + maxValue); return false; } } return true; } function validateNumberNoAlert(value,precision,scale,minValue,maxValue ){ //converto il valore in numerico js per verificare che sia effettivamente numerico var jsvalue = value.replaceAll('\\'+i18nGroupSep,''); jsvalue = jsvalue.replace(i18nDecimalSep,'.'); //controllo il numero di caratteri decimali if(value.lastIndexOf(i18nDecimalSep)!=value.indexOf(i18nDecimalSep)){ return false; } //controllo che sia convertibile in numero js if(isNaN(jsvalue)){ return false; } //controllo la scala if(scale != 'undefined'){ var valDecIdx = -1; if(value.match('\\'+i18nDecimalSep)){ valDecIdx = value.lastIndexOf(i18nDecimalSep); var fract = value.substr(valDecIdx+1) if(fract.length>scale){ return false; } if(fract.match('\\'+i18nGroupSep)){ return false; } } } //controllo la precisione if(precision != 'undefined'){ var absValue; var jsDecIdx = jsvalue.lastIndexOf('.'); if(jsDecIdx >-1){ absValue = Math.abs(jsvalue.substr(0,jsDecIdx)); }else{ absValue = Math.abs(jsvalue); } if((absValue.toString()).length > (precision-scale)){ return false; } } //controllo se � rispettato il grouping size if(value.match('\\'+i18nGroupSep)){ var valDecIdx = value.lastIndexOf(i18nDecimalSep); var intValue = value.substr(0,valDecIdx).replace('+','').replace('-',''); var tokens = intValue.split(i18nGroupSep); var i; var token; for ((i=tokens.length-1);i>=0;i--){ token = tokens[i]; if(i>0){ if(token.length!=i18nGroupSize){ return false; } }else{ if(token.length>i18nGroupSize){ return false; } } } } //controllo il valore minimo if(minValue != 'undefined'){ var floatVal = parseFloat(jsvalue); if(floatValmaxValue){ return false; } } return true; }