0

我在 asp.net mvc 中有一张桌子。在这张表中,我每行都有一个复选框。当我选中一个复选框时,我想在该行中找到工资值并与选中的其他行工资相加。我想通过 Jquery 或 java script 来做这个总和。

    @foreach (var item in Model)
 {
        <tr id="rowid">
            <td>
                <input type="checkbox" name="chk-@intCount" id="chk-@intCount" class="chkclass" />
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.TechnicalNo)
            </td>
            <td class="sum" id="wagein">
                @Html.DisplayFor(modelItem => item.Wage)
            </td>
            <td class="sum" id="time">
                @Html.DisplayFor(modelItem => item.Time)
            </td>
        </tr>
 }

这是我在 asp.net mvc 中的代码。我现在如何对工资和时间的检查值求和?

编辑 :

我的 jQuery 代码:

<script src="/Scripts/jquery-1.4.4.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.chkclass').click(function() {
        var sum = 0;
        $('.chkclass:checked').each(function() {
            sum += parseFloat($(this).closest('tr').find('.wagein').text());    
        });
        $('#sum').html(sum);
    });​
    });
</script>

我的html代码:

<tr>
    <td>
         <input type="checkbox" name="chk-1" id="chk-1" class="chkclass" />
    </td>
    <td class="sum wagein">
        10
    </td>
</tr>
<tr>
    <td>
        <input type="checkbox" name="chk-2" id="chk-2" class="chkclass" />
    </td>
    <td class="sum wagein">
        10
    </td>
</tr>

任何想法 ?!问题是什么 ?!

4

3 回答 3

4

首先修复您的标记,因为它被严重破坏。请记住,整个 HTML 文档中的 id 必须是唯一的:

@foreach (var item in Model)
{
    <tr>
        <td>
            <input type="checkbox" name="chk-@intCount" id="chk-@intCount" class="chkclass" />
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.TechnicalNo)
        </td>
        <td class="sum wagein">
            @Html.DisplayFor(modelItem => item.Wage)
        </td>
        <td class="sum">
            @Html.DisplayFor(modelItem => item.Time)
        </td>
    </tr>
}

然后您可以订阅.click()复选框的事件并为所有工资累积总和:

$(function() {
    $('.chkclass').click(function() {
        var sum = 0;
        $('.chkclass:checked').each(function() {
            sum += parseFloat($(this).closest('tr').find('.wagein').text());
        });
        alert(sum);
    });
​});

这是一个现场演示,可以看到它的实际效果:http: //jsfiddle.net/pbkjr/

于 2012-08-15T08:06:21.657 回答
1

好的,从您显示的标记开始,用<table></table>标签正确包装,下面的 div 显示总数:

<table>
<tr>
    <td>
         <input type="checkbox" name="chk-1" id="chk-1" class="chkclass" />
    </td>
    <td class="sum wagein">
        10
    </td>
</tr>
<tr>
    <td>
        <input type="checkbox" name="chk-2" id="chk-2" class="chkclass" />
    </td>
    <td class="sum wagein">
        10
    </td>
</tr>
</table>
<div id="total"></div>

当单击任何复选框时,以下 jquery(@Darin 编写)将汇总所有选中的行:

$('.chkclass').click(function() {
        var sum = 0;
        $('.chkclass:checked').each(function() {
            sum += parseFloat($(this).closest('tr').find('.wagein').text());    
        });
        $('#total').html(sum);
    });

这与 Darin 的原作非常接近,只是我更改了最后一行以将总数输出到 id 的 div 中total。这似乎比将总和写入每一行更有可能!

这可以在这个实时示例中看到:http: //jsfiddle.net/ADE3a/

于 2012-08-15T08:52:26.727 回答
0

jQuery(document).ready(function ($) {
    var sum = 0;
    $('input[type=checkbox]').click(function () {
        sum = 0;
        $('input[type=checkbox]:checked').each(function () {
            sum += parseFloat($(this).closest('div').find('.payment').val());
        });
        $('#total').val(sum);
    });
});

达林·季米特洛夫

万分感谢。我遇到了一个问题,我想为选中的复选框添加隐藏字段并将复选框值(true 或 false)传递给控制器​​。

@Html.CheckBoxFor 正在为每个复选框在其旁边创建一个隐藏字段

我正在使用 $(this).next().val() 这给了我 NAN 问题。因为它正在获取隐藏字段的值。

感谢您的帖子,我能够获得下一个 div 隐藏字段值

我做了类似下面的事情

于 2019-10-16T20:19:26.243 回答