首页 文章

刷新下拉列表但保留旧的选定值JSON [重复]

提问于
浏览
1

这个问题在这里已有答案:

我的一个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并选择select,然后删除下拉列表中具有值的所有listitems(所以“请选择... “我没有删除默认的listitem,因为它没有分配值”,一旦删除了所有填充的项目,我就会迭代我的数据变量并再次填充所有的下拉列表 .

这段代码工作正常,但我遇到的问题是,用户进入页面并选择一些选项,然后用户通过新打开的jquery模式向下拉列表添加一个新选项,当模态关闭时,上面的代码是比跑,但不是他们选择的选项现在回到请选择 . 如何保留选中的旧值并将其放回我的下拉列表选项中?

2 回答

  • 1

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

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

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

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

    这是工作代码

    <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,然后我们删除所有子项,然后我们使用new填充每个下拉列表选项并检查保存的selectedvalue是否等于我们要填充下拉列表的任何选项,如果这是真的,我们然后设置选择的选择,

    希望这可以帮助其他人 .

相关问题