【问题标题】:Refresh dropdownlist but keep old selected value JSON [duplicate]刷新下拉列表但保留旧的选定值 JSON [重复]
【发布时间】:2014-07-04 12:08:35
【问题描述】:

我的一个 CSHTML 文件中有一些 javascript 代码

$.getJSON("@Url.Action("GetLanguages")", function (data) {
        debugger;
        var $languages = $('.supplier-languages select');
        $languages.children().filter(function () {
            return $(this).attr('value');
        }).remove();
        $.each(data, function () {
            debugger;
            var option = $('<option />', {
                text: this.Text,
                value: this.Value
            });

            $languages.append(option.clone());
        });
    });
    jSnap.modals.removeModal();

基本上数据是一个 selectlistitems 列表,第一部分查找所有供应商语言 div 并选择选择,然后我们删除下拉列表中具有值的所有列表项(所以“请选择...”我拥有的默认列表项,不会被删除,因为它没有分配值),一旦所有填充的项目都被删除,然后我遍历我的数据变量并再次填充我的所有下拉列表。

此代码工作正常,但我遇到的问题是,用户转到页面并选择一些选项,然后用户通过新打开的 jquery 模态向下拉列表添加一个新选项,当模态关闭时上面的代码没有运行,但他们选择的选项现在没有设置回请选择。如何保持旧值被选中并将它们放回我的下拉列表选项中?

【问题讨论】:

  • LB 这完全是一个不同的问题,这是关于更新我的下拉列表,而不是保存旧的选定值

标签: c# javascript jquery asp.net json


【解决方案1】:

这是工作代码

<script>
    $.getJSON("@Url.Action("GetLanguages")", function (data) {

        var $languages = $('.supplier-languages select');

        $languages.each(function () {
            var $language = $(this);
            var selectedValue = $language.val();

            $language.children().filter(function () {
                return $(this).attr('value');
            }).remove();


            $.each(data, function () {
                debugger;
                var option = $('<option />', {
                    text: this.Text,
                    value: this.Value,
                });

                if (this.Value == selectedValue) option.attr('selected', 'selected');

                $language.append(option.clone());
            });
        });
    });
    jSnap.modals.removeModal();
</script>

现在基本上,它和上面的一样,但是它一次为每个下拉列表 1 做它,而不是遍历所有下拉列表,我们得到 selectedValue,然后删除所有子节点,然后填充每个下拉列表使用新选项,并检查保存的 selectedvalue 是否等于我们将要填充下拉列表的任何选项,如果这是真的,我们将选择的选项设置为选中,

希望这对其他人有所帮助。

【讨论】:

    【解决方案2】:

    您可以将 AJAX 调用之前的旧选定值保存在变量中:

    var selectedValue = $('select').val();
    

    当使用新值更新选择时,只需尝试将该值放回原处。

    $('select').val(selectedValue);
    

    【讨论】:

    • 为评论干杯,但我解决了问题
    • @Canvas 好的,但如果这是您修复它的方式,请考虑接受答案以供将来参考。如果没有,您应该发布自己的答案并接受它!
    • 我正在这样做,正如我对你的评论一样,我还要再等 2 天才能做到
    猜你喜欢
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2015-06-21
    • 2015-05-05
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    相关资源
    最近更新 更多