从代码中检查复选框,但jquery看不到它?

时间:2011-05-29 13:04:26

标签: jquery asp.net-mvc-2

我正在使用asp.net mvc 2并且在我的操作中我默认将属性设置为true,因此它会在代码中写入时检查,它是一个复选框。

这将生成以下代码

<input id="BookTalent_BookATalent" class="bookTalent" type="checkbox" value="true" name="BookTalent.BookATalent" checked="checked">

现在我得到了第二个复选框“filmPermit”,默认情况下未选中,现在它的工作方式是,如果两个复选框都被选中,则没有任何变化,但是如果这个“filmPermit”复选框被单独检查,它会隐藏一个格。

现在我得到的代码工作正常,我没有在booktalent复选框上设置默认检查,就像我检查filmpermit复选框它隐藏div,如果checktalent复选框被选中它将不会隐藏它。但是为什么当我在booktalent复选框上将默认值设置为“已检查”时它不起作用?

这是我检查

的jquery
$('.filmPermit').click(function () {
            $('#filmPermit').toggle(this.checked);

            if (this.checked) {
                if ($('.bookTalent').is(':checked')) {
                    $('#lookingFor').toggle(true);
                } else {
                    $('#lookingFor').toggle(false);
                }

                if ($('.quote').is(':checked')) {
                    $('#lookingFor').toggle(true);
                } else {
                    $('#lookingFor').toggle(false);
                }
            } else {
                $('#lookingFor').toggle(true);
            }
        }).triggerHandler('click');

修改 这是我用于标记的代码

<%: Html.CheckBoxFor(model => model.BookTalent.BookATalent, new { @class = "bookTalent"}) %><label>Book A Talent</label>
        <%: Html.CheckBoxFor(model => model.BookTalent.Quote, new { @class = "quote"}) %><label>Get Quote</label>
        <%: Html.CheckBoxFor(model => model.BookTalent.FilmPermit, new { @class = "filmPermit" }) %><label>Film Permit</label>

2 个答案:

答案 0 :(得分:1)

此代码的结构方式,.bookTalent的状态完全无关紧要。检查.bookTalent后,您立即获得以下信息:

if ($('.quote').is(':checked')) {
    $('#lookingFor').toggle(true);
} else {
    $('#lookingFor').toggle(false);
}

它会覆盖.bookTalent上的检查结果。我无法告诉你如何修复它,因为你没有说明.quote应该做什么。

答案 1 :(得分:0)

这是我的工作理论。

您正在检查$(".bookTalent").is(':checked')而不是$("#BookTalent_BookATalent").is(':checked')

在类上选择可以返回多个项目,并且.is()命令将返回是否选中了任何选定的项目。

尝试使用更精确的格式,看看它是否有所作为。

BTW:$('.quote').is(':checked')

也存在同样的问题