0

更新:最终修复:

        $('.gasamount').sum();
        var num = $(this).attr("id").replace(/[A-Za-z$,-]/g, "");
        $('#gasmoney'+num).val(<cfoutput>#mileage#</cfoutput> * $(this).val());
        $('.gasmoney').sum();

我一直在努力完成的事情:

  • 为一行单元格创建一个设定值。
  • 将用户的价值乘以存储的数量。
  • 获取该结果并在下一行的正下方的单元格中显示该值。

我似乎无法让它工作。每次我认为我已经接近时,我都会返回对象或未定义的值。

Javascript


    $('.calc').change(function(){
        var classArray = $(this).attr('class').split(' ');

        $.each(classArray, function(){

            var totalsum = $('.'+this).sum();
            $('.ttl'+this).val(Number(totalsum).toFixed(2));

            var gas = $('.gasamount4');
            var gasAmt = gas.val() * <cfoutput>#mileage#</cfoutput>;
            var gasTot = $('gasmoney4').val(gasAmt);
            gasTot;
            alert(gasTot);
        });

        //Finding the grandtotal
        var grandTotal = $('.row26').parent().children('td:last').children( 'input');
        var sum = $('.row25').parent().children('td').children('.calc').sum();
        grandTotal.val(Number(sum).toFixed(2));
    });

冷融合/HTML


        <cfloop from="1" to="#ArrayLen(labels)#" index="r">
        <tr>
            <td class="labels"><cfif ArrayIsDefined(labels,r) AND labels[r] NEQ "Open">#labels[r]#</cfif></td>
            <cfloop from="1" to="7" index="i">
            <td id="Day#i#" class="row#r# col#i#">
                <cfif r EQ 1>#Left(DayOfWeekAsString(i),3)#<cfelse><cfif r EQ 2><input type="text" class="date-mask" /><cfelse><input type="text" class="calc <cfif labels[r] EQ "Personal Car: Mileage ##">gasamount#i# </cfif> <cfif labels[r] EQ "Personal Car: Mileage $">gasmoney#i# </cfif><cfif labels[r] EQ "Daily Totals">ttlC#i#<cfelse>R#r# C#i#</cfif><cfif labels[r] EQ "Grand Total">gTtl#r#</cfif>" <cfif labels[r] EQ "Daily Totals" OR labels[r] EQ "Personal Car: Mileage $">readonly="readonly"</cfif> /></cfif></cfif></td>
            </cfloop>
            <td class="totals"><cfif r EQ 1>Total<cfelse><input type="text" class="ttlR#r#" readonly="readonly" /></cfif></td>
        </tr>
        </cfloop>

如果有什么不清楚的地方,请问我会尽力提供任何额外的信息。谢谢。

4

1 回答 1

1

从代码中,我推测您要取“个人汽车里程#”行的每个单元格中的数字,乘以用户的里程率,然后将结果放入“个人汽车里程数”的相应单元格中排。

尝试这个:

$('input.R4').change(function () {
    var val = this.value,
    cell = this.className.match(/C\d+/)[0];

    val = parseInt(val, 10);
    val *= <cfoutput>#mileage#</cfoutput>;
    $('td.row5 input.' + cell)[0].value = val.toFixed(2);
});

编辑:

$('input.R4') 应该选择具有“R4”类的每个输入元素,因此这将是“Personal Car Mileage #”行上的每个输入元素。

“单元格”变量(回想起来,命名不佳)捕获刚刚更改的单元格的列。因此,如果您更改第一个输入框,这将是“C1”。

因此,$('td.row5 input.C1') 将在表的第五行(“个人汽车里程数”行)中捕获类别为“C1”的输入,并将其值设置为计算出的金额。

因此,它应该已经适用于行中的每个单元格。这是可能的,因为您已经为行、单元格和输入元素提供了有用的类名称——但请注意,数值可能会在以后更改。如果有人在您之后将新行插入表中,从而丢弃了数字,则此代码可能会中断。

通过在这些东西上添加“gasamountX”和“gasmoneyX”,你走在了正确的轨道上,但我认为你应该去掉它们的数字。如果这样做,您可以将代码更改为:

$('input.gasamount').change(function () {
    var val = this.value,
    column = this.className.match(/C\d+/)[0];

    val = parseInt(val, 10);
    val *= <cfoutput>#mileage#</cfoutput>;
    $('input.gasmoney.' + column)[0].value = val.toFixed(2);
});

说得通?

于 2009-08-04T14:13:17.977 回答