用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"> </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"> </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

