javascript - 如何防止在javascript中自动多次调用onchange函数?

标签 javascript php jquery html

我的代码有问题,不知道为什么会这样。我在 javascript 中使用多个函数调用 onchange 事件。当用户在字段中输入值时,javascript 函数会通过 onchange 事件更改其他值。但问题是,我在 onchange 事件中只使用了一个函数,然后它可以很好地进行计算。 另一方面,当多个函数用于 onchange 事件时,两个函数都会随机调用。我需要防止这意味着我只需要那个需要的函数调用。 为什么两个函数都调用,如何根据需要分别调用?

function update_net_amount(){
		var moduleprice = $('#module').val(); 
		var charges = $('#charges').val();
		var amount1 = ( ( parseInt(moduleprice) + parseInt(charges) ) );
		var discount1 = $('#discount').val();
		var netamount1 = amount1 - discount1; 
		$('#netamount1').val( netamount1 );
		alert("amc1==="+netamount1);
		}
	function update_net_amount_percentage(){
		var moduleprice = $('#module').val();
		var charges = $('#charges').val();
		var discount = $('#discount1').val();
		var amount1 = ( parseInt(moduleprice) + parseInt(charges) );
		var netamount = ( (amount1 * discount) / 100 );
		var total = amount1 - netamount;
        $('#netamount1').val( total );
		alert("amc2==="+total);
	}
	function update_net_amount_percenatge_amount(){
		var moduleprice = $('#module').val();
		var charges = $('#amcpercent').val();
		var netamount = ( (moduleprice * charges) / 100 );
		var amount2 = ( parseInt(moduleprice) + parseInt(netamount) );
		var discount = $('#discount').val();
		var nettotal = amount2 - discount;
        $('#netamount1').val( nettotal );
		alert("amc3==="+nettotal);
	}
	function update_net_amount_percenatge_amount_percentage(){
		var moduleprice = $('#module').val();
		var charges = $('#amcpercent').val();
		var netamounts = ( (moduleprice * charges) / 100 );
		var amount3 = ( parseInt(moduleprice) + parseInt(netamounts) );
		var discounts = $('#discount1').val();
		var disamount = (( amount3 * discounts ) / 100 );
		var fulltotal = amount3 - disamount;
		$('#netamount1').val(fulltotal);
		alert("amc4==="+fulltotal);
		/* discount in % subtracts from amount3 */
	}
<html>
<div class="pro-add">
           <form action="" method="post" enctype="multipart/form-data" id="name">
           		<label>Project</label>
                   <span class="txt-val"><input type="text" name="pro" value="<?php echo $data['fvprojectname']; //from database ?>" disabled="disabled" /></span>
				<label>Module</label>
                <span class="txt-val"><input type="text" name="mod" value="<?php echo $data['fvmodulename']; //from database?>" disabled="disabled" /></span><br />
           		   <label>AMC</label>
                   <span class="txt-val amc"><input type="text" id="charges" onchange="javascript:update_net_amount();" name="charges" placeholder="amount in rupees only." value="0" /></span>
					<label>or</label>
                   <span class="txt-val amc-per"><input type="text" name="percentcharges" id="amcpercent" onchange="javascript:update_net_amount_percenatge_amount();" placeholder="in %" />&nbsp;%</span>
				   
				   <div class="invoice-table">
                       <table style="border-collapse: collapse; border: 1px solid black; text-align:center; width:130%;">
                           <tr>
	                           <td rowspan="2" class="col-all" style="border: 1px solid black; background-color: #00701c; color: #fff; font-weight:bold;">
                               Sr. No.</td>
                               <td rowspan="2" class="col-all" style="border: 1px solid black; background-color: #00701c; color: #fff; font-weight:bold;">			                                Price Per Module</td>
                               <th colspan="3" class="col-all" style="border: 1px solid black; background-color: #00701c; color: #fff; font-weight:bold;">
                               Amount</th>
                           </tr>
                           <tr>
                               <td colspan="2" class="col-all" style="border: 1px solid black; background-color: #00701c; color: #fff; font-weight:bold;">
                               Discount</td>
                               <td colspan="2" class="col-all" style="border: 0px solid black; background-color: #00701c; color: #fff; font-weight:bold;">
                               Net Amount</td>
                           </tr>
                           <?php global $counter; $counter=1; ?>
                           <tr>
	                       	<td rowspan="2" style="border: 0px solid black;"><?php echo $counter++; ?></td>
                           </tr>
                           <tr>
                           
                           <td style="border-collapse: collapse; border: 1px solid black;"><input type="text" id="module" name="price" placeholder="module price." value="<?php echo $data['fiamount']; //from database?>" onchange="javascript:update_net_amount();" /></td>
                               <td colspan="2" style="border-collapse: collapse; border: 1px solid black;"><input type="text" id="discount" onchange="javascript:update_net_amount();update_net_amount_percenatge_amount();" name="discount" class="set-tr" placeholder="enter discount in rupees." /> or&nbsp;&nbsp;
                               <input type="text" id="discount1" onchange="javascript:update_net_amount_percentage();update_net_amount_percenatge_amount_percentage();" name="perdiscount" class="set-tr-per" placeholder="enter discount in %." /></td>
                               <td colspan="2" style="border-collapse: collapse; border: 1px solid black;"><input type="text" id="netamount1" name="net" class="set-tr-net" placeholder="net amount in rupees." value="<?php //echo $data['fiamount']; ?>" onchange="javascript:update_net_amount_percenatge_amount();" /></td>
                           </tr>
                       </table>
                   </div>
                
                   <br/>
                   <span class="btn-adding"><input type="submit" name="adding" value="Save" /></span>
                   <span class="btn-cancel"><input type="submit" name="cancel" value="Cancel"  /></span>
           </form>
       </div>
</html>

如何调用需要javascript中单独的onchange事件的调用函数。

在此先感谢,请帮助我。

最佳答案

不要内联调用所有函数,将事件代码写在 js 文件中。

例子:

$('#charges').change( function(){
     update_net_amount();
})

$('#discount1').change( function(){
     update_net_amount_percentage();
     update_net_amount_percenatge_amount_percentage();
})

从 html 中删除 onchange 事件:

<input type="text" id="discount1"  name="perdiscount" class="set-tr-per" placeholder="enter discount in %." />

关于javascript - 如何防止在javascript中自动多次调用onchange函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45160088/

相关文章:

javascript - 在javascript中传递函数和函数调用自身有什么区别?

javascript - map 拖动事件 谷歌地图 android sdk cordova cordova-plugin-googlemaps

javascript - 使用下划线模板从另一个函数 jQuery 内部调用的事件不起作用

JavaScript 按钮事件处理程序不工作

javascript - 当我们点击其中的任何列表时,如何阻止滑出栏隐藏?

javascript - 如何使用javascript获取属性调用函数?

php - 是否可以在重定向之前删除 PHP 中的引荐来源网址?

php - Codeigniter 下拉值不显示

php - 以下 PHP 代码的输出是什么?

javascript - 我无法检查多个单选按钮