/*ver. 0.2 24-04-2015 gestione campo indietro 10-03-2014 checkNumber: intercettatto il punto e sostituito con virgola 24-09-2009 prima versione. tolto formatNumber e strintToNumber da function.js */ //////////////////////////////////////////////////////////////////////////////////7 //////////////////////////////////////////////////////////////////////////////////7 //////////////////////////////////////////////////////////////////////////////////7 function formatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas) /********************************************************************** IN: NUM - the number to format decimalNum - the number of decimal places to format the number to bolLeadingZero - true / false - display a leading zero for numbers between -1 and 1 bolParens - true / false - use parenthesis around negative numbers bolCommas - put commas as number separators. RETVAL: The formatted number! **********************************************************************/ { /* LOCALE IT --> SEPARATORE DECIMALE , SEPARATORE MIGLIAIA . LOCALE EN --> SEPARATORE DECIMALE . SEPARATORE MIGLIAIA , //da gestire */ var sepD=","; var sepM="."; if (isNaN(parseInt(num))) return "NaN"; var tmpNum = num; var iSign = num < 0 ? -1 : 1; // Get sign of number // Adjust number so only the specified number of numbers after // the decimal point are shown. tmpNum *= Math.pow(10,decimalNum); tmpNum = Math.round(Math.abs(tmpNum)) tmpNum /= Math.pow(10,decimalNum); tmpNum *= iSign; // Readjust for sign // Create a string object to do our formatting on var tmpNumStr = new String(tmpNum); //alert(tmpNumStr); //se locale=IT sostituisco i . con le , tmpNumStr=tmpNumStr.replace('.',','); // See if we need to strip out the leading zero or not. if (!bolLeadingZero && num < 1 && num > -1 && num != 0) if (num > 0) tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length); else tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length); // See if we need to put in the commas if (bolCommas && (num >= 1000 || num <= -1000)) { var iStart = tmpNumStr.indexOf(sepD); if (iStart < 0) iStart = tmpNumStr.length; iStart -= 3; while (iStart >= 1) { tmpNumStr = tmpNumStr.substring(0,iStart) + sepM + tmpNumStr.substring(iStart,tmpNumStr.length) iStart -= 3; } } // See if we need to use parenthesis if (bolParens && num < 0) tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")"; return tmpNumStr; // Return our formatted string! } function formatNumb(num,decimalNum) { // versione semplificata return formatNumber(num,decimalNum,true,false,false); } ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// function checkNumber(i, delKey,direction) { // utilizzare sui fild numerici //onkeydown="checkNumber(this, event.keyCode,'down')" onkeyup="checkNumber(this, event.keyCode,'up');refreshResto()" if (i.value.length < 10) { if (delKey!=9) { //tab if(delKey!=8 && delKey!=46 && delKey!=16 && !(delKey>36 && delKey<41)){ //if the delete, backspace, shift, are not the keys that caused the keyup event. if ((delKey >= 48 && delKey <= 57) || (delKey >= 96 && delKey <=105) || (delKey==188) || (delKey==112)) { //tutto ok.... //190 -->, 110 -->. } else if(delKey==190 || delKey==110) { i.value = i.value.substring(0,i.value.length-1); //alert(i.value.indexOf(",")); if (i.value.indexOf(",")==-1) { i.value += ","; } } else { if (direction == "up") { if (i.value.length == 0) { i.value = ""; } else { i.value = i.value.substring(0,i.value.length-1); } } } i.focus(); } } else { if (direction == "down") { return checkNumber(i) } } } } //////////////////////////////////////////////////////////////////////////////////7 //////////////////////////////////////////////////////////////////////////////////7 //////////////////////////////////////////////////////////////////////////////////7 function stringToNumber(val) { //levo ,00 eventuale var v00=val.indexOf(',00'); if(v00!=-1) val=val.substr(0,v00); //levo il , finale eventuale var virg=val.indexOf(','); if(virg!=-1 &&virg==val.length-1 ) val=val.substr(0,virg); //aggiustamenti punti val=val.replace(/[.]/,''); val=val.replace(/[.]/,''); val=val.replace(/[.]/,''); val=val.replace(/[.]/,''); val=val.replace(',','.'); //tolgo gli zeri finali var dotIdx=val.indexOf('.'); //alert("dotidx0"+dotIdx); if(dotIdx!=-1) { var j=val.length-1; /* while(val.charAt(i)!='.' && val.charAt(i)=='0' ) NON FUNZIONA.. forse perche' usavo i invece di j!!*/ while(val.charAt(j)!='.' ) { //alert("j="+j+" val charat(j):"+val.charAt(j)); if(val.charAt(j)=='0') { val=val.substr(0,j); j--; } else j=dotIdx; } if(val.charAt(val.length-1)=='.') val=val.substr(0,val.length-1); } num = parseFloat(val); return num; }