0

在我的 ASP.NET MVC 3 站点中,有一张商品表。每行都有带有布尔值的隐藏输入字段。

<input name="@string.Format("items[{0}].IsStriked", i)" type="hidden" value="false" />

每行都有按钮单击处理程序:

$(".shoppingcart a.strike").live("click", function (e) {
        e.preventDefault();
        var $button = $(this);
        var $tr = $button.parents("tr:first");
        if ($("input[name$='IsStriked']", $tr).val() == "false") {
            var $isStriked = $("input[name$='IsStriked']", $tr).val("true");
        }
        else {
            var $isStriked = $("input[name$='IsStriked']", $tr).val("false");
        }
        var $form = $button.parents("form");
        $form.submit();
    });

但是当我尝试将这个标志更改为几行时,我不能。它仅适用于一排。我想这是因为输入的默认值。我该如何解决?谢谢你。

4

1 回答 1

0

虽然我没有更改您的任何功能,但我已经更新了绑定以使用最新的绑定方法并简化了处理程序中的逻辑。试试看。

$('.shoppingcart').on('click', 'a.strike', function (e) {
    e.preventDefault();

    var $button = $(this),
        $tr = $button.closest('tr'),
        $input = $tr.find('input[name$="IsStriked"]');

    $input.val($input.val() == 'false' ? 'true' : 'false');

    $button.parents("form").submit();
});
于 2013-08-13T20:37:43.743 回答