It appears you have not yet registered with DEVPPL. To register please click here... (it's fast, easy and free!)

Forum

Log In Sponsors
Board index Programming JavaScript Forum

form calculations

form calculations

Postby dalai on Wed Jan 12, 2005 6: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
 
Posts: 3
Joined: Tue Dec 07, 2004 4:37 pm

Who is online

Users browsing this forum: No registered users and 6 guests

cron