【问题标题】:How to trigger dynamic dropdown in Edit View如何在编辑视图中触发动态下拉
【发布时间】:2019-12-25 23:48:46
【问题描述】:

我是 Web 开发的新手,我刚刚学习了 Jquery 来创建动态下拉列表。我面临的问题是当我进入编辑视图时我的下拉菜单没有更新。

所以我已经能够成功地为我的创建视图创建动态下拉列表(参见代码)。

创建.cshtml:

<div class="form-group col-md-4" id="drop_1">
    <label asp-for="Option_1" class="control-label"></label>
    <select asp-for="Option_1" class="form-control" id="opt1">
         <option value="">Select Option</option>
         <option value="A">A</option>
         <option value="B">B</option>
         <option value="C">C</option>
         <option value="D">D</option>
    </select>
    <span asp-validation-for="Option_1" class="text-danger"></span>
</div>

<div class="form-group col-md-4" id="drop_2">
    <label asp-for="Option_2" class="control-label"></label>
    <select asp-for="Option_2" class="form-control" id="opt2">
         <option value="">Select Option</option>
    </select>
    <span asp-validation-for="Option_2" class="text-danger"></span>
</div>

<div class="form-group col-md-4" id="drop_3">
    <label asp-for="Option_3" class="control-label"></label>
    <select asp-for="Option_3" class="form-control" id="opt3">
         <option value="">Select Option</option>
    </select>
    <span asp-validation-for="Option_3" class="text-danger"></span>
</div>

Edit.cshtml 与 Create.cshtml 相同

Site.js:

$(function() {
    $('#opt3').change(function () {
        var x = $(this);
        if (x.val() == "") {
            $('#drop_2').hide();
            $('#drop_3').hide();
        }
        else {
            if (x.val() == "A") {
                $('#opt2').find('option').remove().end();
                $('#opt2').append('<option value="D">D</option>');
                .
                .
                . etc.
            }
        }
        //Same for the remaining dropdowns
    });
});

关键是当我开始点击我的下拉菜单时,我的下拉菜单会起作用。但是我想看到的是,当我尝试进入我的编辑视图并拉入数据时,下拉菜单会根据下拉菜单 1 和 2 的任何数据自动更改,而无需用户重新选择下拉菜单 1和 2.

【问题讨论】:

  • 我已经研究了触发方法,但它们对我不起作用,这可能是因为我不知道如何使用它们。我试图在函数的开头添加它们,例如: $('opt1').change()

标签: javascript jquery asp.net-core .net-core asp.net-core-mvc


【解决方案1】:

change 事件在元素值改变时发送到元素。如果您想在第一次加载页面时更改下拉列表,您可以直接在$(function () {}); 中编写您的 javascript 方法。例如,如果您想在加载编辑视图后添加D 选项以选择 2:

<script>
    $(function () {

        $('#opt2').append('<option value="D">D</option>');

        //write your other logic here 



        $('#opt3').change(function () {                                                                                             
            var x = $(this);                                                                                                
            if (x.val() == "") {
                $('#drop_2').hide();
                $('#drop_3').hide();
            }
            else {
                if (x.val() == "A") {
                    $('#opt2').find('option').remove().end();
                    $('#opt2').append('<option value="D">D</option>');

                }
            }
            //Same for the remaining dropdowns
        });
    });

</script>

【讨论】:

  • 如果我这样做,我如何能够在 opt2 中维护更改功能?
  • 注册 opt2 的 change 事件。 $('#opt2').change(function () { })
  • 对不起,你介意在上面给我的例子中告诉我吗?我想我不明白在哪里注册更改事件。非常感谢!
  • 编辑:我刚刚明白你的意思,现在一切正常。再次感谢您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多