[英]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.