我无法将 MVC 复选框设置为在 jquery 中选中

I can't set an MVC checkbox as checked in jquery

本文关键字:jquery 设置 复选框 MVC      更新时间:2023-09-26

在MVC中,我正在使用助手创建一个复选框,如下所示

@Html.CheckBox("MDCCheckbox", true, new { @class = "LineCheckbox" })
@Html.Label("MDCCheckbox", "MDC")  

没什么好看的。

我希望能够(取消)选中jquery中的框。

我可以很容易地取消选中它,但我无法将其设置为选中。这与 MVC 呈现 html 的方式有关,但我无法弄清楚。

我知道我可以自己创建元素,但我想知道我做错了什么。

这就是将 razor 呈现为 html 的方式(使用匹配的输入元素将 true/false 传递给服务器)。

<input checked="checked" class="LineCheckbox" id="MDCCheckbox" name="MDCCheckbox" type="checkbox" value="true" />
<input name="MDCCheckbox" type="hidden" value="false" />
<label for="MDCCheckbox">MDC</label> 

我创建了一个小提琴,使其更容易玩和测试。 我什至无法让它在小提琴中工作。

小提琴

这是jquery

$(".check").click(function () {        
    $(".LineCheckbox").attr("checked", true);
});
$(".uncheck").click(function () {        
    $(".LineCheckbox").removeAttr("checked");
});

使用 .prop() 来设置属性检查:

$(".check").click(function () {        
    $(".LineCheckbox").prop("checked", true);
});
$(".uncheck").click(function () {        
    $(".LineCheckbox").prop("checked", false);
});

使用 .prop()

$(".check").click(function () {        
    $(".LineCheckbox").prop("checked", true);
});
$(".uncheck").click(function () {        
    $(".LineCheckbox").prop("checked", false);
});

演示

一个很好的阅读 .prop() vs .attr()

使用.prop()

$(".check").click(function () {        
    $(".LineCheckbox").prop("checked", true);
});

您可以看到.prop().attr()之间的区别

小提琴演示

你可以使用这个:

$(".check").click(function () {        
    $('.LineCheckbox').prop('checked', true);
});
$(".uncheck").click(function () {        
     $('.LineCheckbox').prop('checked', false);
});