changeEvent
上有DropDownListFor
,它会触发事件的代码,但所选项目为空,即$(this).val();
为null
查看:
<script>
$(function () {
$("#selected_listBulletinBoardsMessages").change(function (e) {
var val = $(this).val();
..
});
});
</script>
<div>
<div id="selected_listBulletinBoardsMessages">
@Html.DropDownListFor(model => model.listBulletinBoardsMessages, Model.listBulletinBoardsMessages.Select(b => new SelectListItem() { Value = b.Department, Text = b.Department }), "All Departments", new { @class = "form-control" })
</div>
</div>
我做错了什么?
答案 0 :(得分:3)
因为div
元素没有“值”。您需要select
元素的值。理想情况下,您将绑定 元素的change
事件:
$("#selected_listBulletinBoardsMessages select").change(function (e) {
var val = $(this).val();
..
});
但是,如果出于此问题的上下文之外的原因,您想要像当前那样绑定到div
,那么您可以从其中的select
获取值。您已拥有的e
事件变量可以帮助您实现目标。也许是这样的:
$("#selected_listBulletinBoardsMessages").change(function (e) {
var val = $(e.target).val();
..
});
当然,如果select
中有多个div
元素,则可能需要更改。目前,您所展示的代码并非如此。
另请注意,这是基于DropDownListFor()
确实生成select
元素的假设。我无法想象为什么它不会,但我想这是可能的。您至少要做的是检查实际的HTML并查看其中的内容,以便优化用于访问该HTML的任何JavaScript代码。
答案 1 :(得分:2)
div
没有change
事件。
您应该监听change
的{{1}}事件,从而将ID指定为select
元素。
DropDownListFor
答案 2 :(得分:1)
应该是这样的
<script>
$(function () {
$("#selected_listBulletinBoardsMessages select").change(function (e) {
var val = $(this).val();
..
});
});
</script>
因为您试图致电div
change event
,在这种情况下不应该在那里。