Javascript - 返回连接而不是输入中的变量之和

时间:2017-07-06 05:34:23

标签: javascript jquery each

我正在尝试使用.each()从输入字段获取值,并添加它们以显示另一个输入值中的总和。但不幸的是,尽管使用了parseInt(),但我无法得到总和。

HTML

<input type=text name=value[] id=value class="value">
<input type=text name=value[] id=value class="value">
<input type=text name=totalvalue id=totalvalue>  

的JavaScript

var totalvalue = parseInt(0);
$(document).on("focusout",".value",function() {
    $(".value").each(function() {
        totalvalue = parseInt(totalvalue + $(this).val());
    });
    $("#totalvalue").val(totalvalue);
});

JSFiddle Demo

6 个答案:

答案 0 :(得分:1)

你正在解析的是

  

totalValue添加到输入的字符串中,然后解析结果。

这就是它连接的原因。相反,您需要在totalValue之外添加parseInt() 以外的,以便它说

  

totalValue并将解析后的输入值添加到其中。

喜欢这个

totalvalue = totalvalue + parseInt($(this).val());

这可以进一步缩短为

totalvalue += parseInt($(this).val());

答案 1 :(得分:1)

你应该在焦点输出函数中声明@Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryval") @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts", required: false) ,因为它总是会显示两个输入文本的总和,并在总和时传递输入值为空状态!!!

totalvalue

答案 2 :(得分:0)

尝试使用parseFloat()输入值

<form class="form" (ngSubmit)="f.form.valid && fetchingFlights()" #f="ngForm" novalidate>
<table>
 <tr>
    <th><label>Flight Carrier: </label></th>
        <td>
            <div  [ngClass]="{ 'has-error': f.submitted && !flightInfo.flightCarrierCode.valid }"></div>
            <input type="text" name="flightCarrier" placeholder="Enter Flight Carrier Code" class="textbox" [(ngModel)]="flightInfo.flightCarrierCode" #flightCarrier="ngModel" required>
            <div class="validation" *ngIf="f.submitted && !flightInfo.flightCarrierCode.valid" >Carrier code is required</div>
        </td>
</tr>
</table>

<div><button type="submit" value="Go">Go</button></div> 

&#13;
&#13;
parseFloat($(this).val()));
&#13;
var totalvalue = parseInt(0);
$(document).on("focusout",".value",function() {
    $(".value").each(function() {
        totalvalue = (totalvalue + parseFloat($(this).val()));
    });
    $("#totalvalue").val(totalvalue);
});
&#13;
&#13;
&#13;

答案 3 :(得分:0)

你追加的字符串。 $(this).val()是一个字符串。只需将其解析为int或float。

答案 4 :(得分:0)

如果您的目的是根据您的代码,那么它将始终与第一个框值相加。

  var value = parseInt($(this).val());
    if(value)
    totalvalue = totalvalue + value;
});

否则你应该详细说明你的问题,以便提供正确的答案。

答案 5 :(得分:0)

您正在将NaN数据类型添加到Number数据类型。因此,您需要在执行添加操作之前对其进行限制。

请检查一下

var totalvalue = 0;
$(document).on("focusout",".value",function() {
    $(".value").each(function() {
        if(isNaN($(this).val()) || $(this).val() != ''){
            totalvalue = totalvalue + parseInt($(this).val());
      }
  });
  $("#totalvalue").val(totalvalue);

});