| You are here: DEVPPL ‹ Forum ‹ Programming ‹ JavaScript Forum |
NOTIFICATIONS
|
|
|||||||||||||||
Login |
form calculations
1 post
• Page 1 of 1
0
form calculations
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
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
- 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
|
|