• jQuery 实现表格列合计


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>实现多个输入框输入时数值自动相加</title>
    </head>
    <body>
        <table id="table-fund">
          <caption class="table-caption-legend">
          (单位:万元)</caption>
          <thead>
              <tr>
                  <th colspan="3">经费到位情况</th>
              </tr>
              <tr>
                  <th>科目</th>
                  <th>预算数</th>
              </tr>
          </thead>
          <tr>
              <td>1.省科技经费</td>
              <td>
                  <input id="SouProSciTech" type="text" />
              </td>
          </tr>
          <tr>
              <td>2.单位自筹</td>
              <td>
                  <input id="SouUnitSelfFinanc" type="text" />
              </td>
          </tr>
          <tr>
              <td>3.银行贷款</td>
              <td>
                  <input id="SouBankloans" type="text" />
              </td>
          </tr>
          <tr>
              <td>
                  <span class="totall"></span><span class="totall"></span>
              </td>
              <td>
                  <input id="TotalSou" readonly="readonly" type="text" />
              </td>
            </tr>
        </table>
    
    <script src="jquery-1.12.4.js"></script>
    <script>
      // 1 为每个input绑定事件
      //  实现在单元格值发生变化时,合计行的单元格的值自行发生变化,采用.each()遍历input并为其绑定函数keyup
      //  在keyup事件发生时进行合计。
      //  这里遍历除统计单元格之外的每个input,以下代码遍历第二列的输入框,在:not()中排除合计单元格的input。
      //  在input的keyup触发时调用合计方法。
      $("#table-fund tr").each(function () {
          $(this).find("td:eq(1) input:not(#TotalSou)").keyup(function () {
              totalSouFund();//调用合计方法
          });
      });
    
      // 2 实现合计
      // (1)totalSou用来存储合计值,在每次调用该函数时把totalSou置0,然后遍历每个单元格中的值进行累加;
      function totalSouFund() {
            totalSou = 0;
            $("#table-fund tr").each(function () {
                $(this).find("td:eq(1) input:not(#TotalSou)").each(function () {
                    totalSou += getNumValue($(this)) ;
                    $("#TotalSou").val(Number(totalSou.toFixed(4)));
                });
            });
      }
    
      // (2) getNumValue()用来获取文本框的值,返回float;
      function getNumValue(controlid) {
          var num = controlid.val();
          if (validateInput(num)) {
              num = parseFloat(num);
          }
          else {
              controlid.val("");
              num = 0;
          }
          return num;
      }
    
      // 3 validateInput() 返回一个Bool值用来验证输入的值是否有效,确保getNumValue返回一个有效数值
      function validateInput(inputstr) {
          flag = false;
          if (inputstr != "") {
              if (isNaN(inputstr)) {
                  flag = false; //如果输入字符不是数字
              }
              else {//输入数字但是小于0
                  if (parseFloat(inputstr) < 0)
                      flag = false;
                  else
                      flag = true;
              }
          }
          return flag;
      }
    
      // 4 处理javaScript中浮点数计算的出现的问题
      $("#TotalSou").val(Number(totalSou.toFixed(4)));
    
    </script>
                  
    </body>
    </html>
  • 相关阅读:
    singleton模式 在软件开发中的运用
    State Pattern
    闲话闲说——关于异常
    程序人生
    Event
    SerialPort实现modem的来电显示
    利用枚举进行状态的设计
    职责链模式的运用
    我对当前项目的一些看法
    SHAREPOINT 2007 网站模板(解决方案)安装和卸载
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/12755780.html
Copyright © 2020-2023  润新知