You are here: DEVPPL Forum Programming JavaScript Forum
NOTIFICATIONS
54.107
MEMBERS
15.696
TOPICS
62.284
POSTS
  562
FLASH GAMES
7.740
TUTORIALS
 

Login

E-mail:
Password:

form calculations

0

Loading

form calculations

Postby Dalai » Wed Jan 12, 2005 7:42 pm

hi all, i was wondering if someone could help me...

im using the script below to calculate a total from a set of fields.
but i need to be able to change some of the values, then recalculate,
but i get an error "method not suported" when i re run the function prop()

any help would be appreciated.

Craig

:shock:

Code: Select all
function prop()
   {
   var frm = document.spt;
   //alert(Math.abs(frm.marriagesav.value) + Math.abs(frm.othersav.value))
   
   frm.willihtsav.value = ForceNumeric(frm.willihtsav.value);
   frm.extranssav.value = ForceNumeric(frm.extranssav.value);
   frm.smlgftsav.value = ForceNumeric(frm.smlgftsav.value);
   frm.marriagesav.value = ForceNumeric(frm.marriagesav.value);
   frm.normsav.value = ForceNumeric(frm.normsav.value);
   frm.othersav.value = ForceNumeric(frm.othersav.value);
   prop = Math.abs(frm.willihtsav.value) + Math.abs(frm.extranssav.value) + Math.abs(frm.smlgftsav.value) + Math.abs(frm.marriagesav.value) + Math.abs(frm.normsav.value) + Math.abs(frm.othersav.value);
   if (prop > 0)
      {
      frm.proptotal.value=FormatNumber(prop,0);
      }
   else
      {
      frm.proptotal.value=0;
      }
   }
   function FormatNumber(Number,Decimals,Separator)
{
 // **********************************************************
 //
 // November 24, 1998 -- Error which allowed a null value
 // to remain null fixed. Now forces value to 0.
 //
 // This function accepts a number to format and number
 // specifying the number of decimal places to format to. May
 // optionally use a separator other than '.' if specified.
 //
 // If no decimals are specified, the function defaults to
 // two decimal places. If no number is passed, the function
 // defaults to 0. Decimal separator defaults to '.' .
 //
 // If the number passed is too large to format as a decimal
 // number (e.g.: 1.23e+25), or if the conversion process
 // results in such a number, the original number is returned
 // unchanged.
 // **********************************************************
 Number += ""          // Force argument to string.
 Decimals += ""        // Force argument to string.
 Separator += ""       // Force argument to string.
 if((Separator == "") || (Separator.length > 1))
  Separator = "."
 if(Number.length == 0)
  Number = "0"
 var OriginalNumber = Number  // Save for number too large.
 var Sign = 1
 var Pad = ""
 var Count = 0
 // If no number passed, force number to 0.
 if(parseFloat(Number)){
  Number = parseFloat(Number)} else {
  Number = 0}
 // If no decimals passed, default decimals to 2.
 if((parseInt(Decimals,10)) || (parseInt(Decimals,10) == 0)){
  Decimals = parseInt(Decimals,10)} else {
  Decimals = 2}
 if(Number < 0)
 {
  Sign = -1         // Remember sign of Number.
  Number *= Sign    // Force absolute value of Number.
 }
 if(Decimals < 0)
  Decimals *= -1    // Force absolute value of Decimals.
 // Next, convert number to rounded integer and force to string value.
 // (Number contains 1 extra digit used to force rounding)
 Number = "" + Math.floor(Number * Math.pow(10,Decimals + 1) + 5)
 if((Number.substring(1,2) == '.')||((Number + '')=='NaN'))
  return(OriginalNumber) // Number too large to format as specified.
 // If length of Number is less than number of decimals requested +1,
 // pad with zeros to requested length.
 if(Number.length < Decimals +1) // Construct pad string.
 {
  for(Count = Number.length; Count <= Decimals; Count++)
   Pad += "0"
 }
 Number = Pad + Number // Pad number as needed.
 if(Decimals == 0){
  // Drop extra digit -- Number is formatted.
  Number = Number.substring(0, Number.length -1)} else {
  // Or, format number with decimal point and drop extra decimal digit.
 Number = Number.substring(0,Number.length - Decimals -1) +
          Separator +
          Number.substring(Number.length - Decimals -1,
          Number.length -1)}
 if(Sign == -1)
  Number = "-" + Number  // Set sign of number.
 if(Number.length == 0)
  Number="0"
 return(Number)
}


function ForceNumeric(nValue)
   {
   validChars = "0123456789.";
   newValue="";
   for(k = 0; k < nValue.length; k++)
      {
      thisChar = nValue.charAt(k);
      if(validChars.indexOf(thisChar) != -1) newValue += thisChar;
      }
   return newValue;
   }
Dalai
 
Reputation: 0
Posts: 3
Joined: Tue Dec 07, 2004 5:37 pm
Highscores: 0
Arcade winning challenges: 0

form calculations - Sponsored results

Sponsored results

Login to get rid of ads

 

^ Back to Top