输入字段的总和为#total只读字段

时间:2016-02-20 21:30:04

标签: jquery

我在keyup上有一个jquery函数,用于计算不同班级中男生的入学人数(使用字段),并将总和列入男生总入学率字段。

$("#Asc201516EleClassEceBoysEnrollment").keyup(function(){
            var sum = 0;

            ece    = +$("#Asc201516EleClassEceBoysEnrollment").val();               
            katchi = +$("#Asc201516EleClassKatchiBoysEnrollment").val();
            one    = +$("#Asc201516EleClassEceOneEnrollment").val();
            two    = +$("#Asc201516EleClassEceTwoEnrollment").val();
            three  = +$("#Asc201516EleClassThreeBoysEnrollment").val();
            four   = +$("#Asc201516EleClassFourBoysEnrollment").val();
            five   = +$("#Asc201516EleClassFiveBoysEnrollment").val();
            six    = +$("#Asc201516EleClassSixBoysEnrollment").val();
            seven  = +$("#Asc201516EleClassSevenBoysEnrollment").val();
            eight  = +$("#Asc201516EleClassEightBoysEnrollment").val();
            nine   = +$("#Asc201516EleClassNineBoysEnrollment").val();
            ten    = +$("#Asc201516EleClassTenBoysEnrollment").val();

            sum =  sum + parseInt(ece+katchi+one+two+three+four+five+six+seven+eight+nine+ten);             
            console.log(sum);

            $("#Asc201516EleTotalBoysEnrollment").val(sum);

        });

我在NaN输入字段中获得#Asc201516EleTotalBoysEnrollment。可能是什么问题?同一功能对于同一页面上的其他组(教师总数)字段工作正常。

1 个答案:

答案 0 :(得分:1)

如果您不需要将个别计数保留在其全局变量中,如示例所示(您是否使用var ...在任何地方声明了这些变量?!?)那么您可以改为完成所有操作这个稍微短暂的功能:

$("#Asc201516EleClassEceBoysEnrollment").keyup(function(){
  var sum=0
  ['ece','katchi','one','two','three','four','five','six','seven','eight','nine','ten'].forEach(function(el){
      sum += ~~$("#Asc201516EleClass"+el+"BoysEnrollment").val();
  })
  console.log(sum);
  $("#Asc201516EleTotalBoysEnrollment").val(sum);
});

在JavaScript中~是按位NOT - 运算符。应用它两次会将任何字符串转换为整数值,因此可以被视为标准parseInt()函数的“更宽容的兄弟”。 NaN将显示为0float值将被截断。

(对+返回的每个字符串应用.val()运算符,正如您所做的那样,也会尝试将字符串转换为整数,但如果字符串包含任何与整数格式结果将是NaN并最终破坏你的求和。)