我无法在jquery中设置一个MVC复选框

时间:2013-12-17 17:24:19

标签: javascript jquery asp.net-mvc asp.net-mvc-4

在MVC中,我正在使用助手来创建一个像这样的复选框

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

没什么特别的。

我希望能够(取消)检查jquery中的方框。

我可以非常轻松地取消选中,但我无法将其设置为选中。 这与MVC呈现html的方式有关,但我无法弄明白。

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

这就是剃刀被渲染成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> 

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

fiddle

这是jquery

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

4 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:2)

使用.prop()

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

DEMO

好读.prop() vs .attr()

答案 2 :(得分:2)

使用.prop()

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

您可以看到difference between .prop() and .attr()

Fiddle Demo

答案 3 :(得分:1)

你可以用这个:

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