“Html.CheckBoxFor”的jQuery选择器

时间:2011-08-31 21:07:23

标签: c# jquery asp.net-mvc jquery-ui jquery-selectors

使用像这样的复选框时,有没有办法使用asp.net/jquery切换div可见性:

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

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

编辑 - 让我改变一下......我如何为Html.CheckBoxFor()指定一个id?

3 个答案:

答案 0 :(得分: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选择器。

答案 1 :(得分:0)

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

假设您的复选框有一个id =“checkbox1”,您可以执行以下操作

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

答案 2 :(得分: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 =&gt; model.client.email)

或在剧本中:

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