2011-08-31 60 views
8

是否有使用asp.net/jquery切换一个div可见使用这样的复选框,当一个办法:jQuery选择为“Html.CheckBoxFor”

<%: Html.CheckBoxFor(m => m.Type) %>

我知道该怎么做了jQuery部分,但我不确定如何确定该框是否已被点击或更改。是否有某种onChange或onClick我可以添加到此?

编辑 - 让我改变这一点...如何将一个id分配给Html.CheckBoxFor()?

+1

我觉得复选框的ID会被自动设置为它被用于创建对象的属性。所以在上面的例子中,它会是'id ='Type''。您可以随时查看代码创建的标记以进行仔细检查。 – ipr101

回答

17

你可以认购.change()事件.toggle()基础上的复选框是否已被检查或不div的可见性:

$(function() { 
    $('#mycheckbox').change(function() { 
     var isChecked = $(this).is(':checked'); 
     $('#someDivId').toggle(isChecked); 
    }); 
}); 

,您可以see it in action here

要确定此复选框,你既可以给它分配一个唯一的ID:

<%: Html.CheckBoxFor(m => m.Type, new { id = "mycheckbox" }) %> 

或类:

<%: Html.CheckBoxFor(m => m.Type, new { @class = "check" }) %> 

,然后调整你的jQuery选择。

+0

我的意思是如何将一个ID分配给复选框?我在ASP.Net中使用CheckBoxFor,我不确定如何设置ID。 – Cody

+1

@Doctor奥利奥,默认情况下,Html.CheckBoxFor帮手分配一个ID。它将从视图模型对象层次结构中的lambda表达式中推断出来。所以如果我们在0级,它会是'id =“Type”'。您可以通过使用CheckBoxFor帮助程序的适当重载来自定义此更新,如我的更新答案中所示。 –

+0

出于某种原因,我必须选中该框并取消选中函数()进行注册。 – Cody

0

是的,大多数html元素都有onclick/onchange事件。

我们假设您的复选框有一个id = “checkbox1”,你可以做以下

var myCheckBox = document.getElementById("checkbox1"); 
myCheckBox.addEventListener('change', function(){do something}, false); 
+0

我的意思是我如何分配一个ID到复选框?我在ASP.Net中使用CheckBoxFor,我不确定如何设置ID。 – Cody

0

看到这个问题:get the generated clientid for a form field,这就是我的回答:

我用这个帮手:

public static partial class HtmlExtensions 
{ 
    public static MvcHtmlString ClientIdFor<TModel, TProperty>(
     this HtmlHelper<TModel> htmlHelper, 
     Expression<Func<TModel, TProperty>> expression) 
    { 
     return MvcHtmlString.Create(
       htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(
        ExpressionHelper.GetExpressionText(expression))); 
    } 
} 

使用它就像任何其他的辅助:@ Html.ClientIdFor(型号=> model.client.email)

或脚本:

$(function() { 
    $('#@Html.ClientIdFor(m=>m.Type)').change(function() { 
     // Do stuff 
    }); 
});