如何使用javascript / jQuery获取表单字段值以汇总到另一个字段值?

时间:2015-09-29 02:36:19

标签: javascript jquery

我有以下html表单字段,我需要acct1,acct2和acct3的总和等于附加费字段的值。

$('#surcharge').change(function(){
    if( ( $('#acct1').val() + $('#acct2').val() + $('#acct3').val() ) == $('#surcharge') ){
        alert("Values match Surcharge");
    }
    else {
        alert("Values DO NOT match Surcharge");
    }
});

到目前为止,我尝试了几种变体:

{{1}}

5 个答案:

答案 0 :(得分:1)

尝试将值转换为整数

parseInt($('#acct1').val())+parseInt($('#acct2').val());

答案 1 :(得分:1)

问题是val()方法返回一个字符串。它需要先转换为整数。您可以通过调用Number()并将值包装在括号内来实现。

$('#surcharge').change(function(){
    if( Number($('#acct1').val()) + Number($('#acct2').val()) + Number($('#acct3').val()) == $('#surcharge').val() ){
        alert("Values match Surcharge");
    }
    else {
        alert("Values DO NOT match Surcharge");
    }
});

这有点难以阅读,所以最好将其分解

$('#surcharge').change(function() {
    var total = 0;
    $("#acct1", "#acct2", "#acct3").each(function() {
        total += Number($(this).val());
    });
    if (total == $('surcharge').val()) {
});

答案 2 :(得分:0)

您需要将字段值转换为数字。默认输入字段值是字符串。目前你正在添加字符串。要获得一个数字,请为您的所有字段(包括附加费)执行此操作:

parseFloat($('#acct1').val());

答案 3 :(得分:0)

$('#surcharge,#acct1,#acct2,#acct3').keyup(function() {
      console.log([parseInt($('#acct1').val()),parseInt($('#acct2').val()),parseInt($('#acct3').val()), parseInt($('#surcharge').val())]);
        if (
          (
            parseInt($('#acct1').val()) + parseInt($('#acct2').val()) + parseInt($('#acct3').val())
          ) == parseInt(
            $('#surcharge').val()
          )
        ) {
          alert("Values match Surcharge");
        } else {
          alert("Values DO NOT match Surcharge");
        }
      });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="acct1" value="1">+
<input id="acct2" value="1">+
<input id="acct3" value="1">=
<input id="surcharge" value="3">

答案 4 :(得分:0)

您应该将听众更改为模糊,以便在附加费字段的每次更改(按键)时都不会触发事件。

此外,在所有acct输入字段中添加一个类,以便您可以按类循环:

$( "#surcharge" ).blur(function() {
  var total = 0;
  $(".acct").each(function() {
    if($(this).val()) {
      total += parseFloat($(this).val());
    }
  });
   //you may want total.toFixed(2)
   if(parseFloat($(this).val()) == total.toFixed(2)) {
    alert("Values match Surcharge");  
   } else {
    alert("boooo!");
   }

});

这是一个JSFiddle演示。