下拉列表

时间:2017-12-13 12:43:53

标签: jquery asp.net-mvc asp.net-mvc-3 asp.net-mvc-5

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>

我做错了什么?

3 个答案:

答案 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,在这种情况下不应该在那里。