【问题标题】:semantic-ui dropdown with remote selection menu content: 'clear' and 'set exactly' remove placeholder带有远程选择菜单内容的语义 ui 下拉菜单:“清除”和“完全设置”删除占位符
【发布时间】:2026-01-17 08:55:02
【问题描述】:

我正在使用静态占位符文本创建一个包含批处理结果的下拉列表(使用 apiSettings.url 成员从远程源获取)。 一切工作(或多或少)都很好,直到我调用 dropdown('clear') 或 dropdown('set exactly'),它们都做了他们应该做的 - 但另外删除了我的占位符文本。这可能是理想的行为吗?我错过了什么吗?

这是一个示例下拉 HTML:

<div name="dropdown" class="ui  fluid multiple search selection dropdown">
  <input class="search" tabindex="0">
  <div class="default text">my disappearing placeholder</div><i class="dropdown icon"></i>
  <input type="hidden" name="temporary">
  <div class="menu"></div>
</div>

还有一个精简的下拉初始化代码:

$('.ui.dropdown').dropdown({
  fullTextSearch: true,
  allowAdditions: false,
  apiSettings: {
    url: "<some URL returning search results for list>"
  }
});

还有罪魁祸首(?):

$('.ui.dropdown').dropdown('clear');

$('.ui.dropdown').dropdown('set exactly', ['value1', 'value2']);

问题在此处演示:http://jsfiddle.net/11coy51r/3/

要么点击“完全设置”按钮,然后删除添加的值,要么输入任何艺术家姓名(来自 Spotify 的目录),选择它,然后点击清除。两者都会导致一个空的下拉输入框,没有以前可见的占位符。

额外问题:

我为这个问题制作了一个简单的演示非常困难(并且可以说是惨败),主要是因为“精确设置”部分。所以我想知道,我在那里遗漏了什么吗?除了在设置所选值之前手动将选择项添加到菜单之外,还有更好的方法在远程内容下拉列表中使用“完全设置”吗?

【问题讨论】:

    标签: semantic-ui


    【解决方案1】:

    语义 UI 源目前存在一些问题,其中刷新功能会删除占位符/默认文本数据,至少在使用 allowAdditions 或远程数据/API 时是这样。

    在语义 UI 开发人员修复它之前,我找到了一个修复程序。 https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.1.8/components/dropdown.js 在第 390-392 行 - 函数 refreshData,注释如下:

    //.removeData(metadata.defaultText)
    //.removeData(metadata.defaultValue)
    //.removeData(metadata.placeholderText)
    

    这当然需要你暂时将修改后的js文件存储在本地。

    希望这会有所帮助。

    【讨论】:

    • 这个答案解决了我的问题。谢谢