提问人:Maxim V. Pavlov 提问时间:1/27/2012 最后编辑:GerickeMaxim V. Pavlov 更新时间:11/28/2017 访问量:13974
将客户端复选框单击的处理程序添加到 Razor 视图
Add a client-side checkbox clicked handler to Razor view
问:
以下标记生成一个 checkbox 类型的输入,其中包含 何时将 Razor 视图发送到浏览器。id="IsRecurring"
<div class="editor-label">
@Html.LabelFor(model => model.IsRecurring)
</div>
<div class="editor-field">
@{
@Html.EditorFor(model => model.IsRecurring)
}
</div>
我需要根据复选框的选中状态显示/隐藏其他标记块。
哪种方式最符合 MVC3 要求?
我的计划是在 div 上方添加以下脚本:
<script type="text/javascript">
$("#IsRecurring").click(function () {
do show hide;
});
</script>
在我的 View 标记中放置脚本的适当位置在哪里?有没有更好的方法可以引用复选框,而不是提前知道它将具有什么 ID?IsReccuring
答:
3赞
Fernando Mondo
1/27/2012
#1
隐藏/显示是我会使用脚本的行为,在复选框中添加一个类:
@Html.CheckBoxFor(model => model.IsRecurring, new {@class "recurring"})
//event
$(".recurring input:checkbox").click(function () {
//hide/show
});
评论
1赞
korzeniow
1/27/2012
无需使用新类,因为 Razor 引擎将 checkbx 绑定到模型,因此将 ID 的 IsRecurring 提供给复选框
0赞
Maxim V. Pavlov
1/27/2012
事件处理逻辑在视图中的什么位置?它甚至计量吗?我将如何通过 ID 引用元素。我没有一类复选框,因此在我的情况下错误地使用了一个类。
4赞
Felix
1/27/2012
#2
你可以试试这样:
@Html.CheckBoxFor(model => model.IsRecurring, new {onchange = "checkedChanged"})
//JS
var checkedChanged = function () {
alert("checkedChanged");
}
评论
1赞
korzeniow
1/27/2012
比 IE9 更旧的 IE 无法识别更改事件 AFAIK
0赞
Maxim V. Pavlov
1/27/2012
正如我所提到的,我愿意使用一种不显眼的方法来将客户端脚本逻辑与文档模型分开。另外,我的问题包括“JS应该在视图中去哪里”?
1赞
Randy Eppinger
6/6/2014
这对我们有用。Maxim,我们将javascript放在一个外部.js文件中,并带有脚本标签。
0赞
Bogdan Mates
9/2/2015
#3
您也可以尝试:
$('#checkboxId').click(function () {
//add code here
});
评论