选择后无法在 select2.js 中显示占位符

Posted

技术标签:

【中文标题】选择后无法在 select2.js 中显示占位符【英文标题】:Can't show placeholder in select2.js after selection 【发布时间】:2014-09-06 00:11:12 【问题描述】:

使用 select2.js 检索绑定到隐藏输入的远程数据。

 <input type="hidden" id="departmentNameEntry"  style="width:300px"/>

我已经在初始化中设置了占位符:

$("#departmentNameEntry").select2( placeholder: "搜索部门", 最小输入长度:2, 阿贾克斯: url: "处理程序/DeptNameSearch_handler.ashx", 缓存:假, 数据类型:'json', 类型:'GET', 数据:功能(术语,页面) 返回 departmentNameFragment: term // 搜索词输入到处理程序的查询字符串中 ; , results: function (data, page) // 将结果解析为 Select2 期望的格式。 返回结果:数据; , 格式结果:功能(项目) 返回项目.文本; , 格式选择:格式部门名称, formatNoMatches:函数(术语) return '没有部门名称符合您的查询'; );

但是一旦选择了一个项目,占位符就会变为空白。如何将其重置为原始字符串?我尝试将初始化代码放在一个单独的函数中并再次执行它,但没有任何乐趣。我看到回答的其他问题似乎特定于绑定到 SELECT。我做错了什么?

【问题讨论】:

不确定你的意思。占位符应该变为空白,而应输入所选值。它只是一个占位符。 @basher:第一次加载页面时,用户可以看到带有占位符“搜索部门”的控件,因此他知道下一步该做什么。但是如果用户点击了退出,或者清除了页面上的控件来重新开始搜索操作,占位符是空白的,他的指令就会消失。是的,我可以在“搜索部门”控件上方放置一个标签,但我想如果可能的话,我会使用占位符。 【参考方案1】:

我的 RTFM 不够仔细。

formatSelection 选项要求您返回一个字符串,然后该字符串将显示在 select2 中以代替占位符文本。这是我的功能:

功能格式部门名称(部门) $('#hfDepartmentID').val(dept.id); // 当用户从列表中选择时,将 id 放入输入中 $('#hfDepartmentName').val(dept.text); // 存储部门名称以备后用 DepartmentCurrentBossesGet(dept.id, dept.text); // 调用另一个函数 DepartmentBossHistoryGet(dept.id); // 调用另一个函数 $('.row4').show(); // 在页面上显示有用的数据 返回部门文本; // 返回部门名称,以便 select2 可以显示它

希望这对某人有所帮助。

【讨论】:

以上是关于选择后无法在 select2.js 中显示占位符的主要内容,如果未能解决你的问题,请参考以下文章

将 select2.js 与多个选择 optgroup 和 knockoutJS 一起使用

如何默认选择 select2.js 的下拉值

Bootstrap,选择选项占位符仅在首次提交后显示

如何在 select2.js v4.0 中显示 ajax 数据?

下拉框的搜索(有图,适用下拉选择内容较多,需要搜索,自动联想)

如何使用 select2.js