用onchange调用多个函数

这一切都有点超出我的经验,但我已经到处寻找可能,并且迄今为止研究了这些东西6个小时,并且只是碰到了砖墙。用onchange调用多个函数

我有一个表,用户输入两个变量,并从这两个变量12个不同的数字吐出来。 这些数字被作为纯文本字符串吐出到只读文本字段中,我需要将它们显示为(US)货币。 表中的所有输入字段都使用onchange来运行执行计算的第一个函数,但是我在网上找到的第二个和第三个函数无法运行。

HTML:

<form name="form" > 

<table width="550" border="0">

<tr>

<td width="265" height="30"><div align="right">Number of Business Customers</div></td>

</tr>

<TR>

<td width="265" height="30"><div align="right">Number of Business Clients:</div></td>

<td width="142" div align="center"><input style="font-size:12px;text-align:center;" name="sum1" onChange="updatesum();CurrencyFormatted();CommaFormatted90;" /></td>

<td width="129" div align="center">&nbsp;</td>

</tr>

<TR>

<td height="30"><div align="right">Average Number of Employees:</td>

<TD div align="center"><input style="font-size:12px;text-align:center;" name="sum2" onChange="updatesum();CurrencyFormatted();CommaFormatted();" /></TD>

<TD div align="center">&nbsp;</TD>

<TR>

<td height="30"><div align="right">Anticipated Employee Tax Reduction:</div></td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none;" name="sum16" readonly "></TD>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum26" readonly><BR /></TD>

</TR>

<TR>

<td height="30"><div align="right">Potential Payroll Tax Reduction (annually):</div></td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum17" readonly ></TD>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum27" readonly ></TD>

</TR>

<TR>

<td height="30"><div align="right">Potential Payroll Tax Reduction (monthly):</td>

<TD div align="center"><input type="text" style="font-size:12px;text-align:center;border:none" name="sum18" readonly ></td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum28" readonly ></td>

</TR>

<TR>

<td height="30"><div align="right">Pearl Logic Billing (50% of savings, for 12 months):</td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum19" readonly ></td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum29" readonly ></td>

</TR>

<TR>

<td height="30"><div align="right">Sales Agent Monthly Comp (8%):</td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum14" readonly ></td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum24" readonly ></td>

</TR>

<TR>

<td height="30"><div align="right">Sales Agent Total Comp (8%):</td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum15" readonly ></td>

<TD div align="center"><input style="font-size:12px;text-align:center;border:none" name="sum25" readonly ></td>

</TR>

</table>

</form>

的Javascript:

function updatesum() { 

document.form.sum14.value = ((((((document.form.sum1.value -0)*(document.form.sum2.value -0)*300))/12)/2)*.08);

document.form.sum24.value = ((((((document.form.sum1.value -0)*(document.form.sum2.value -0)*400))/12)/2)*.08);

document.form.sum15.value = (((((((document.form.sum1.value -0)*(document.form.sum2.value -0)*300))/12)/2)*.08)*12);

document.form.sum25.value = (((((((document.form.sum1.value -0)*(document.form.sum2.value -0)*400))/12)/2)*.08)*12);

document.form.sum16.value = 300;

document.form.sum26.value = 400;

document.form.sum17.value = ((document.form.sum1.value -0)*(document.form.sum2.value -0)*300);

document.form.sum27.value = ((document.form.sum1.value -0)*(document.form.sum2.value -0)*400);

document.form.sum18.value = (((document.form.sum1.value -0)*(document.form.sum2.value -0)*300)/12);

document.form.sum28.value = (((document.form.sum1.value -0)*(document.form.sum2.value -0)*400)/12);

document.form.sum19.value = ((((document.form.sum1.value -0)*(document.form.sum2.value -0)*300)/12)/2);

document.form.sum29.value = ((((document.form.sum1.value -0)*(document.form.sum2.value -0)*400)/12)/2);

}

//--></script>

<script type="text/javascript"><!--

function CurrencyFormatted()

{

var i = parseFloat(amount);

if(isNaN(i)) { i = 0.00; }

var minus = '';

if(i < 0) { minus = '-'; }

i = Math.abs(i);

i = parseInt((i + .005) * 100);

i = i/100;

s = new String(i);

if(s.indexOf('.') < 0) { s += '.00'; }

if(s.indexOf('.') == (s.length - 2)) { s += '0'; }

s = minus + s;

return s;

}

//--></script>

<script type="text/javascript"><!--

function CommaFormatted()

{

var delimiter = ","; // replace comma if desired

var a = amount.split('.',2)

var d = a[1];

var i = parseInt(a[0]);

if(isNaN(i)) { return ''; }

var minus = '';

if(i < 0) { minus = '-'; }

i = Math.abs(i);

var n = new String(i);

var a = [];

while(n.length > 3)

{

var nn = n.substr(n.length-3);

a.unshift(nn);

n = n.substr(0,n.length-3);

}

if(n.length > 0) { a.unshift(n); }

n = a.join(delimiter);

if(d.length < 1) { amount = n; }

else { amount = n + '.' + d; }

amount = minus + amount;

return amount;

}

//--></script>

回答:

你的函数有一个不确定的变量amount。据推测他们只是因为错误而崩溃。

首先,您需要从onChange侦听器中删除这些函数调用。

其次,转变​​职能采取一个未格式化的值,并返回一个格式化的一个

function CurrencyFormatted(amount) { //<-- notice the method parameter 

var i = parseFloat(amount);

if(isNaN(i)) { i = 0.00; }

var minus = '';

if(i < 0) { minus = '-'; }

i = Math.abs(i);

i = parseInt((i + .005) * 100);

i = i/100;

s = new String(i);

if(s.indexOf('.') < 0) { s += '.00'; }

if(s.indexOf('.') == (s.length - 2)) { s += '0'; }

s = minus + s;

return s;

}

现在改变每个组调用你updatesum先格式化值

var sum14 = ((((((document.form.sum1.value -0)*(document.form.sum2.value -0)*300))/12)/2)*.08); 

var formattedSum14 = CommaFormatted(CurrencyFormatted(sum14));

document.form.sum14.value = sum14;

以上是 用onchange调用多个函数 的全部内容, 来源链接: utcz.com/qa/257152.html

回到顶部