Search code examples
javascriptjqueryjquery-chosen

How to remove choosen item once it is selected and get it back once unselected


Hi i problem in achieving choosen select/unselect, i'm using https://harvesthq.github.io/chosen/

Question: i want to remove item from drop-down once selected and get it back once unselected

Here is my image showing problem:

enter image description here

below is my whole choosen code:

$('.chosen-select').chosen({}).change( function(obj, result) {
    //console.debug("changed: %o", arguments);
    
    console.log("selected: " + result.selected);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.min.css">
    
<div>
<select data-placeholder="Choose a Country..." class="chosen-select" multiple style="width:350px;" tabindex="4">
            <option value=""></option>
            <option value="Any">[Any]</option>
            <option value="United States">United States</option>
            <option value="United Kingdom">United Kingdom</option>
            <option value="Afghanistan">Afghanistan</option>
            <option value="Aland Islands">Aland Islands</option>
            <option value="Albania">Albania</option>
            <option value="Algeria">Algeria</option>
            <option value="American Samoa">American Samoa</option>

          </select>    
</div>


Solution

  • li.result-selected { display:none !important; }
    

    Other stuff I tried did not work, but the CSS change works fine:

    $('.chosen-select').chosen({}).change(function(obj, result) {
      console.log("selected: " + result.selected);
    
      /* None of this works. The CSS does work
          const vals = $(".chosen-select").val();
            $('.chosen-select').find("option[value='"+result.selected+"']").remove()
            console.log(vals)
            $(".chosen-select").val(vals);      
                //  $('.chosen-select').trigger("chosen:updated");
      */
    });
    li.result-selected {
      display: none !important;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.min.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.min.css">
    
    <div>
      <select data-placeholder="Choose a Country..." class="chosen-select" multiple style="width:350px;" tabindex="4">
        <option value=""></option>
        <option value="Any">[Any]</option>
        <option value="United States">United States</option>
        <option value="United Kingdom">United Kingdom</option>
        <option value="Afghanistan">Afghanistan</option>
        <option value="Aland Islands">Aland Islands</option>
        <option value="Albania">Albania</option>
        <option value="Algeria">Algeria</option>
        <option value="American Samoa">American Samoa</option>
    
      </select>
    </div>

    Here is a related question jQuery Chosen - update select list without losing selections which did not help