代码之家  ›  专栏  ›  技术社区  ›  Anthony

是否自动生成其他输入的输入和值?

  •  1
  • Anthony  · 技术社区  · 15 年前

    我只是想知道这是否可能,如果不可能,最好的方法是设置事件处理程序来实现这一点…

    如果我有一个类似电子表格的html表格,比如:

    <table>
       <tr id="row1">
          <td><input type="text" class="number" value="1"/></td>
          <td><input type="text" class="number" value="2"/></td>
          <td><input type="text" class="total" /></td>
       </tr>
    </table>
    

    我能写一个函数吗?

    function getTotal() {
       var total = 0;
       $("#row1 .number").each(function() {
           total += Number($(this).val());
       };
       return total;
    }
    
    $("#row1 .total").val(getTotal);
    

    所以输入的值 total 自动更改为 number 该行中的输入(不必设置 onchange 每个的事件处理程序 输入)?

    理想情况下,我希望total的值只是改变,因为它被设置为其他输入的和,这样它将自己设置为页面加载时的和,以及它的值来自的输入的任何改变。

    我正在尝试创建一个页面,用户在其中输入非总计单元格中的值,一个函数将验证输入,理想情况下,我希望避免每次用户进行更改时都必须更新每一行,但同时,我不想让事情过于复杂,因为必须写出总单元格只应在其行中的单元格更改时更新。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Nick Craver    15 年前

    你可以不用 onchange 随便叫它:

    function setTotal() {
       var total = 0;
       $("#row1 .number").each(function() {
           total += parseInt($(this).val());
       };
      $("#row1 .total").val(total);
    }
    

    如果你想自动触发,只需添加 换上 像这样的页面加载:

    $(function( {
      $("#row1 .number").change(setTotal); //When changing
      setTotal(); //On page load
    });
    
        2
  •  1
  •   sorpigal    15 年前

    像这样的:

    $('#row1 input.number').change(function(){
        var total = 0;
        $('.number').each(function(){
            total += +$(this).val();
        }
        $('.total').val(total);
    });
    

    必须有导致重新计算的事件。在这里,我将它设置为所有input.number元素的更改事件,您不希望这样。你可以让它成为一个按钮事件,或者任何你喜欢的事情,但是没有办法。总的来说就是“改变”而不是让它发生。

        3
  •  0
  •   Skilldrick    15 年前

    当你这样做的时候 .val(getTotal) 你在设置 val 一个函数对象(不起作用)。如果你这样做了 .val(getTotal()) 你只会在那一刻得到总数。

    为什么不说这样的话:

    $("#row1 .number).change(function () {
        $("#row1 .total").val(getTotal());
    });