如何禁用在 Chosen 中删除选定的选项?

How to disable removing selected option in Chosen?

我想阻止用户删除我选择的下拉列表中的预选选项(多个)。

      <select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="8">
        <option value=""></option>
        <option>American Black Bear</option>
        <option>Asiatic Black Bear</option>
        <option>Brown Bear</option>
        <option>Giant Panda</option>
        <option selected>Sloth Bear</option>
        <option selected>Sun Bear</option>
        <option selected>Polar Bear</option>
        <option selected>Spectacled Bear</option>
      </select>

所以我要选择懒熊、马来熊、北极熊和眼镜熊,用户不能将其删除。我该怎么做?

据我所知,没有完美的方法。但作为一种解决方法,您可以尝试禁用您想要阻止的选项,这样它们就无法修改它们的可见性。

您可以试试下面的代码:

<select data-placeholder="Your Favorite Types of Bear" multiple class="chosen-select" tabindex="8">
        <option value=""></option>
        <option>American Black Bear</option>
        <option>Asiatic Black Bear</option>
        <option>Brown Bear</option>
        <option>Giant Panda</option>
        <option disabled>Sloth Bear</option>
        <option disabled>Sun Bear</option>
        <option disabled>Polar Bear</option>
        <option disabled>Spectacled Bear</option>
      </select>

我认为没有正式的方法可以做到这一点。
但是让我给你一个想法。
像这样定义您的 select 项。

<select data-placeholder="Your Favorite Types of Bear" multiple class="my_select_box" tabindex="8">
        <option value=""></option>
        <option value="1">American Black Bear</option>
        <option value="2">Asiatic Black Bear</option>
        <option value="3">Brown Bear</option>
        <option value="4">Giant Panda</option>
        <option value="5" disabled selected>Sloth Bear</option>
        <option value="6" disabled selected>Sun Bear</option>
        <option value="7" disabled selected>Polar Bear</option>
        <option value="8" disabled selected>Spectacled Bear</option>
</select>

所以我才会这样,

因此,现在用户无法删除所选选项。
但是当您检索所选值时,请确保您正在像这样添加所选值。

var selected = $(".my_select_box").val();
var alreadySelected = ['5', '6', '7', '8']
var totalSelected = selected.concat(alreadySelected);

现在,准备好了!你可以玩一下。