【问题标题】:chosen not working for select drop down which is not displayed by default选择不适用于默认情况下不显示的选择下拉菜单
【发布时间】:2013-10-15 05:06:52
【问题描述】:

我在 div 中有一个选择框,默认情况下不显示,并且在某些单击事件中,div 的显示属性更改为阻止,但选择下拉菜单未显示并且显示空白区域。我在更改 div 可见性的同一触发函数中为选择框调用了 selected() 方法。

这是我的问题的代码。

<div class="controls" style="display:none" id="Department-11">
    <select multiple="" class="chosen-select1" id="form-field-select-4" data-placeholder="Choose a Department...">
        <option value="Management">Senior Management</option>
        <option value="Legal">Legal</option>
        <option value="Operations">Operations</option>
        <option value="Administration">Administration</option>
        <option value="R&D">R&D</option>
        <option value="Sales & Marketing">Sales & Marketing</option>
        <option value="Finance">Finance</option>
        <option value="Technology">Technology</option>
        <option value="Customer Service">Customer Service</option>
        <option value="Pro Services">Pro Services</option>
        <option value="HR">HR</option>
        <option value=""></option>
    </select>
</div>

<a href="javascript:void(0);" onclick="showselect();">
    Show select
</a>

而JS代码是

function showselect() {
    $('#Department-11').show();
    $(".chosen-select1").chosen();
}

【问题讨论】:

  • 尝试让chosen() 单独工作。用这个&lt;a href="javascript:showSelect()"&gt;&lt;/a&gt; 替换您的链接,在showSelect 中,只需$(".chosen-select1").chosen();。您必须检查问题是否仅来自插件。此外,文档说将空选项放在第一位,而不是最后一个。
  • 我已经探索过这个问题,发现
  • 添加了一个 hack 作为 .chosen-container { width: 220px !important; }
  • 默认情况下,Chosen 会尝试匹配您要替换的选择框的宽度。如果在实例化 Chosen 时隐藏了选择,则必须指定宽度,否则选择将以 0 的宽度显示。 Here is a list of chosen configuration。作为一个干净的解决方案,您可以使用选中的width 选项为其赋予适当的值。

标签: jquery jquery-chosen


【解决方案1】:

另一种解决方案是在初始方法中设置元素宽度,如下所示。

$(".chosen-select1").chosen({ width:"95%" });

【讨论】:

  • 你为我节省了一天!
  • 但这意味着我们必须在脚本中指定宽度,这违背了拥有 CSS 文件的目的。
  • 这是一个很好的方法,因为它允许选择块始终是容器的全宽,无论其最终大小如何。我将我的宽度设置为 99%,效果很好。
  • 这是最好的解决方案,因为它不涉及修改 selected.css,因此宽度不会硬编码为所有选择的下拉菜单的一种尺寸。
【解决方案2】:

添加css.chosen-container { width: 220px !important; }

【讨论】:

  • 这可行,但仍然想知道为什么会发生这种情况。谢谢
【解决方案3】:

它非常简单。在您的 Jquery 中添加此行。它对我有用。

$(".chosen-select1").val("Legal").trigger("chosen:updated");

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签