代码之家  ›  专栏  ›  技术社区  ›  alperc

dropdownlist上更改事件的值为null

  •  0
  • alperc  · 技术社区  · 7 年前

    拥有 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 回复  |  直到 7 年前
        1
  •  3
  •   David    7 年前

    因为 div 元素没有“值”。您需要 select 要素理想情况下,你应该 那个 元素的 change 改为事件:

    $("#selected_listBulletinBoardsMessages select").change(function (e) {
        var val = $(this).val();          
        ..
    });
    

    但是,如果出于本问题上下文之外的原因,您希望绑定到 部门 就像您当前一样,您可以从 选择 在里面。这个 e 您已经拥有的事件变量可以帮助您实现目标。也许是这样的:

    $("#selected_listBulletinBoardsMessages").change(function (e) {
        var val = $(e.target).val();          
        ..
    });
    

    当然,如果您有多个 选择 中的元素 部门 . 不过,目前您正在显示的代码中并非如此。

    还请注意,这是基于以下假设: DropDownListFor() 确实产生了 选择 要素我无法想象为什么不会,但我认为这是可能的。您至少要检查实际的HTML,看看有什么,以便优化用于访问该HTML的JavaScript代码。

        2
  •  2
  •   Satpal    7 年前

    div 没有 change 事件

    你应该倾听 改变 事件 select ,从而将ID指定为 DropDownListFor 要素

    <div>
        @Html.DropDownListFor(model => model.listBulletinBoardsMessages, 
          Model.listBulletinBoardsMessages.Select(b => new SelectListItem() { Value = b.Department, Text = b.Department }),
         "All Departments", 
         new { @class = "form-control", 
               id="selected_listBulletinBoardsMessages" 
         })
    </div>
    
        3
  •  1
  •   Prateik Darji    7 年前

    应该是这样的

    <script>
    $(function () {
        $("#selected_listBulletinBoardsMessages select").change(function (e) {
            var val = $(this).val();          
            ..
        });
    });
    </script>
    

    因为你想打电话 div change event 在这种情况下不应该有。