【问题标题】:How to refresh a dropdown list in JQuery without using selectmenu('refresh')?如何在不使用 selectmenu('refresh') 的情况下刷新 JQuery 中的下拉列表?
【发布时间】:2016-04-11 15:54:56
【问题描述】:

我想在收到服务器响应后刷新下拉菜单(选择)。我怎样才能做到这一点? 我正在使用 jquery.js(版本 2.1.3)。这是我的 HTML 代码,

<div class="col-md-8">
    <Select id="dd" class="form-control">
        <option value="0"> List </option>
        {{#each listValue}}
            <option value="{{value}}"> {{text}}</option>
        {{/each}}
    </Select>
</div>

在上面的代码中,listValue的值将从服务器获取。因此,如果服务器中的值发生更改,则需要刷新列表。 我正在从服务器获取更新的列表。但是,我不知道如何更新下拉菜单。添加记录时,服务器中的值将被更新。我想在添加记录时刷新下拉列表。

要添加记录,我的下拉菜单旁边有一个按钮。单击此按钮时,将显示一个模式以输入值。单击模式中的“添加”按钮后,输入的值将添加到服务器中。成功添加记录后,我发送 HTTP 请求以获取更新的值。

这是在我的 js 文件中获取更新值的代码,

MyModule.responseList = function(res){
    var listValue = res.content;
    //What should I do here to refresh the dropdown with this listValue
}

listValue会是这样的,

listValue 包含更新的值。现在,我只想用这个值更新下拉列表。 我在 google 中搜索以刷新 jQuery 中的下拉列表。几乎所有的解决方案都建议使用 selectmenu('refresh')。

但我想在不使用selectmenu('refresh') 的情况下刷新列表,因为我没有使用 jquery-ui.js。 有没有办法做到这一点?

【问题讨论】:

  • 您需要提供一个工作示例,至少是您正在使用的插件的名称,或者这应该由offtopic原因关闭
  • 只删除旧的 HTML 并生成新的 HTML
  • 如果我删除旧的 HTML 并生成新的 HTML,那么表单中输入的所有值都会丢失。
  • 您是否使用任何模板引擎?或任何像 Ember Angular 这样的 mvc 框架?
  • I am getting the updated list from the server。如何?阿贾克斯?你能告诉我们你的 AJAX 吗?这真是一个不清楚的问题。

标签: jquery html drop-down-menu


【解决方案1】:

根据您附加的详细信息,您可以像这样刷新&lt;select&gt;

MyModule.responseList = function(res){
    var listValue = res.content;
    var $select = $('select#dd');
    $select.empty(); //remove all current options

    // iterate through new options
    for(var i = 0; i < listValue.length; i++) {
        // create a new option
        var option = $('<option/>').attr('value', listValue[i].value).text(listValue[i].text);
        $select.append(option); // append new options
    }
}

【讨论】:

  • 非常感谢您的回复。我会试试这段代码,让你知道结果..
  • 我可以知道select#dd 是什么吗?是我的
  • 是的,它通过id="dd" 定位您的&lt;select&gt; 标签。首先我清空所有选项,然后附加所有新选项,通过这种模式它可以工作。
  • 好的好的..我现在明白了..这工作..非常感谢..但添加记录后,它默认选择第一个值。为什么会这样?
  • 那是因为它没有第一个选项,也没有带有 selected 属性的 &lt;option&gt;。如果您需要将第一个选项留空,您可以在empty()method 之后添加下一个:$select.empty().append('&lt;option selected&gt;&lt;/option&gt;');
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 2013-07-09
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多