简体   繁体   English

自动减去100中的两个值

[英]Auto substract both values from 100

I created two input fields where they should substract from each other keeping a max value at 100. 我创建了两个输入字段,它们应该相互减去,最大值保持为100。

Currently it substracted value is shown in the second value. 目前,它的减去值显示在第二个值中。 I want it to be interchangeable. 我希望它可以互换。 Irrespective of whether I put in first or second input field, the answer shows in the other. 无论我输入第一个还是第二个输入字段,答案都显示在另一个输入字段中。

Could someone help? 有人可以帮忙吗?

 function updateDue() { var total = parseInt(document.getElementById("totalval").value); var val2 = parseInt(document.getElementById("inideposit").value); // to make sure that they are numbers if (!total) { total = 0; } if (!val2) { val2 = 0; } var ansD = document.getElementById("remainingval"); ansD.value = total - val2; var val1 = parseInt(document.getElementById("inideposit").value); // to make sure that they are numbers if (!total) { total = 0; } if (!val1) { val1 = 0; } var ansD = document.getElementById("remainingval"); ansD.value = total - val1; } 
 <input type="hidden" id="totalval" name="totalval" value="100" onchange="updateDue()"> <div> Enter Value: <input type="text" name="inideposit" class="form-control" id="inideposit" onchange="updateDue()"> </div> <div> Substracted: <input type="text" name="remainingval" class="form-control" id="remainingval" onchange="updateDue()"> </div> 

The simple way to achieve this would be to group the inputs by class and attach a single event handler to them. 实现这一目标的简单方法是按类对输入进行分组,并将单个事件处理程序附加到它们。 Then you can take the entered value from 100 , and set the result to the field which was not interacted with by the user. 然后,您可以从100输入值,并将结果设置为用户未与之交互的字段。 To do that in jQuery is trivial: 在jQuery中这样做是微不足道的:

 $('.updatedue').on('input', function() { var total = parseInt($('#totalval').val(), 10) || 0; var subtracted = total - (parseInt(this.value, 10) || 0); $('.updatedue').not(this).val(subtracted); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="hidden" id="totalval" name="totalval" value="100" /> <div> Enter Value: <input type="text" name="inideposit" class="updatedue form-control" id="inideposit" /> </div> <div> Subtracted: <input type="text" name="remainingval" class="updatedue form-control" id="remainingval" /> </div> 

You can easily validate this so that outputs < 0 and > 100 can be discounted, if required. 您可以轻松验证这一点,以便在需要时可以打折输出< 0> 100

Edit your code as below 编辑您的代码如下

 function updateDue(box) { var total = parseInt(document.getElementById("totalval").value); if(box == 1){ var val = parseInt(document.getElementById("inideposit").value); // to make sure that they are numbers if (!total) { total = 0; } if (!val) { val = 0; } var ansD = document.getElementById("remainingval"); ansD.value = total - val; }else if(box == 2){ var val = parseInt(document.getElementById("remainingval").value); // to make sure that they are numbers if (!total) { total = 0; } if (!val) { val = 0; } var ansD = document.getElementById("inideposit"); ansD.value = total - val; } } 
 <input type="hidden" id="totalval" name="totalval" value="100" onchange="updateDue(0)"> <div> Enter Value: <input type="text" name="inideposit" class="form-control" id="inideposit" onchange="updateDue(1)"> </div> <div> Substracted: <input type="text" name="remainingval" class="form-control" id="remainingval" onchange="updateDue(2)"> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM