简体   繁体   English

添加两个文本框值并自动在第三个文本框中显示总和

[英]Add two textbox values and display the sum in a third textbox automatically

I have assigned a task to add two textbox values.I want the result of addition to appear in the 3rd textbox,as soon as enter the values in the first two textboxes,without pressing any buttons. 我已经分配了一个任务来添加两个文本框值。我希望添加的结果出现在第三个文本框中,只要在前两个文本框中输入值,而不按任何按钮。

For eg:In the first textbox i want to enter 450,when i press digit 4 of number '450',then it will be added to the 3rd textbox,any number i press in the first two textboxes,suddenly that changes will be reflected on the third textbox.How can i do this? 例如:在第一个文本框中我想输入450,当我按下数字'450'的数字4时,它将被添加到第3个文本框,任何数字我按在前两个文本框中,突然显示更改将被反映在第三个文本框上。我怎么能这样做?

Here i write my code call sum() in onkeyup 在这里,我在onkeyup中编写代码调用sum()

onkeyup="sum()"
function sum() {
        var txtFirstNumberValue = document.getElementById('txt1').value;
        var txtSecondNumberValue = document.getElementById('txt2').value;
        var result = parseInt(txtFirstNumberValue) + parseInt(txtSecondNumberValue);
        if(!isNaN(result)){
            document.getElementById('txt3').value = result;
        }
}

This is not working in chrome 这不适用于chrome

try this 尝试这个

  function sum() {
       var txtFirstNumberValue = document.getElementById('txt1').value;
       var txtSecondNumberValue = document.getElementById('txt2').value;
       if (txtFirstNumberValue == "")
           txtFirstNumberValue = 0;
       if (txtSecondNumberValue == "")
           txtSecondNumberValue = 0;

       var result = parseInt(txtFirstNumberValue) + parseInt(txtSecondNumberValue);
       if (!isNaN(result)) {
           document.getElementById('txt3').value = result;
       }
   }

Try this: Open given fiddle in CHROME 试试这个:在CHROME打开小提琴

function sum() {
      var txtFirstNumberValue = document.getElementById('txt1').value;
      var txtSecondNumberValue = document.getElementById('txt2').value;
      var result = parseInt(txtFirstNumberValue) + parseInt(txtSecondNumberValue);
      if (!isNaN(result)) {
         document.getElementById('txt3').value = result;
      }
}

HTML HTML

<input type="text" id="txt1"  onkeyup="sum();" />
<input type="text" id="txt2"  onkeyup="sum();" />
<input type="text" id="txt3" />

DEMO HERE 在这里演示

i didn't find who made elegant answer , that's why let me say : 我没有找到谁做出优雅的答案,这就是为什么让我说:

Array.from(
   document.querySelectorAll('#txt1,#txt2')
).map(e => parseInt(e.value) || 0) // to avoid NaN
.reduce((a, b) => a+b, 0)

 window.sum= () => document.getElementById('result').innerHTML= Array.from( document.querySelectorAll('#txt1,#txt2') ).map(e=>parseInt(e.value)||0) .reduce((a,b)=>a+b,0) 
 <input type="text" id="txt1" onkeyup="sum()"/> <input type="text" id="txt2" onkeyup="sum()" style="margin-right:10px;"/><span id="result"></span> 

那么,根据你的代码,你会在每个文本框txt1和txt2中放置onkeyup = sum()

well I think the problem solved this below code works: 以及我认为问题解决了以下代码的工作原理:

function sum() {
    var result=0;
       var txtFirstNumberValue = document.getElementById('txt1').value;
       var txtSecondNumberValue = document.getElementById('txt2').value;
    if (txtFirstNumberValue !="" && txtSecondNumberValue ==""){
        result = parseInt(txtFirstNumberValue);
    }else if(txtFirstNumberValue == "" && txtSecondNumberValue != ""){
        result= parseInt(txtSecondNumberValue);
    }else if (txtSecondNumberValue != "" && txtFirstNumberValue != ""){
        result = parseInt(txtFirstNumberValue) + parseInt(txtSecondNumberValue);
    }
       if (!isNaN(result)) {
           document.getElementById('txt3').value = result;
       }
   }

This is the correct code 这是正确的代码

function sum() 
{ 
    var txtFirstNumberValue = document.getElementById('total_fees').value; 
    var txtSecondNumberValue = document.getElementById('advance_payement').value; 
    var result = parseInt(txtFirstNumberValue) - parseInt(txtSecondNumberValue); 
    if(txtFirstNumberValue=="" ||txtSecondNumberValue=="") 
    { 
        document.getElementById('balance_payement').value = 0; 
    }
    if (!isNaN(result)) 
    { 
        document.getElementById('balance_payement').value = result;
    }
} 

Since eval("3+2")=5 ,you can use it as following : 由于eval("3+2")=5 ,您可以使用如下:

byId=(id)=>document.getElementById(id); 
byId('txt3').value=eval(`${byId('txt1').value}+${byId('txt2').value}`)

By that, you don't need parseInt 这样,你不需要parseInt

In below code i have done operation of sum and subtraction: because of using JavaScript if you want to call function, then you have to put your below code outside of document.ready(function{ }); 在下面的代码中我已经完成了sum和subtraction的操作:因为如果你想调用函数使用JavaScript ,那么你必须将你的下面的代码放在document.ready(function{ }); and outside the script end tag. 并在脚本结束标记之外。

I have taken one another script tag for this operation.And put below code between script starting tag // your code // script ending tag. 我为此操作添加了另一个脚本标记。并在脚本开始标记//代码//脚本结束标记之间放置以下代码。

 function operation() 

 {

   var txtFirstNumberValue = parseInt(document.getElementById('basic').value);
   var txtSecondNumberValue =parseInt(document.getElementById('hra').value);
   var txtThirdNumberValue =parseInt(document.getElementById('transport').value);
   var txtFourthNumberValue =parseInt(document.getElementById('pt').value);
   var txtFiveNumberValue = parseInt(document.getElementById('pf').value);

   if (txtFirstNumberValue == "")
       txtFirstNumberValue = 0;
   if (txtSecondNumberValue == "")
       txtSecondNumberValue = 0;
   if (txtThirdNumberValue == "")
       txtThirdNumberValue = 0;
   if (txtFourthNumberValue == "")
       txtFourthNumberValue = 0;
   if (txtFiveNumberValue == "")
       txtFiveNumberValue = 0;



   var result = ((txtFirstNumberValue + txtSecondNumberValue + 
  txtThirdNumberValue) - (txtFourthNumberValue + txtFiveNumberValue));
   if (!isNaN(result)) {
       document.getElementById('total').value = result;
   }
 }

And put onkeyup="operation();" 并把onkeyup="operation();" inside all 5 textboxes in your html form. 在html表单中的所有5个文本框中。 This code running in both Firefox and Chrome. 此代码在Firefox和Chrome中运行。

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

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