使用像这样的复选框时,有没有办法使用asp.net/jquery切换div可见性:
<%: Html.CheckBoxFor(m => m.Type) %>
我知道如何做jQuery部分,但我不知道如何确定该框是否已被点击或更改。是否有某种onChange或onClick我可以添加到这个?
编辑 - 让我改变一下......我如何为Html.CheckBoxFor()指定一个id?
答案 0 :(得分:17)
您可以根据复选框是否已选中来订阅.change()
事件和.toggle()
div的可见性:
$(function() {
$('#mycheckbox').change(function() {
var isChecked = $(this).is(':checked');
$('#someDivId').toggle(isChecked);
});
});
要识别此复选框,您可以为其指定唯一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
});
});