有没有办法使用asp.net / jquery在类似以下复选框的情况下切换div的可见性:
<%:Html.CheckBoxFor(m => m.Type)%>
我知道如何处理jQuery部分,但是我不确定如何确定是否已单击或更改该框。我可以添加onChange或onClick之类的内容吗?
编辑 - 让我稍微修改一下...我如何为Html.CheckBoxFor()分配一个id?
编辑 - 让我稍微修改一下...我如何为Html.CheckBoxFor()分配一个id?
你可以订阅.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选择器。
id="Type"
。当然,您可以通过使用CheckBoxFor助手的适当重载来自定义此内容,如我更新后的答案所示。 - Darin Dimitrov是的,大多数HTML元素都有onclick/onchange事件。
假设您的复选框具有id="checkbox1",您可以执行以下操作
var myCheckBox = document.getElementById("checkbox1");
myCheckBox.addEventListener('change', function(){do something}, false);
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=>model.client.email)
或者在脚本中:
$(function() {
$('#@Html.ClientIdFor(m=>m.Type)').change(function() {
// Do stuff
});
});