web-dev-qa-db-fra.com

Supprimer un élément d'une zone de sélection

Comment puis-je supprimer ou ajouter des éléments à une zone de sélection? J'exécute jQuery, cela devrait-il faciliter la tâche? Vous trouverez ci-dessous un exemple de sélection.

<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>    
</select>
256
Teifion

Supprimer une option:

$("#selectBox option[value='option1']").remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>  
</select>

Ajouter une option:

$("#selectBox").append('<option value="option5">option5</option>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
  <option value="option1">option1</option>
  <option value="option2">option2</option>
  <option value="option3">option3</option>
  <option value="option4">option4</option>  
</select>
484
dsimard

Vous pouvez supprimer l'élément sélectionné avec ceci:

$("#selectBox option:selected").remove();

Ceci est utile si vous avez une liste et non une liste déroulante.

77
Etienne Dupuis
window.onload = function ()
{   
    var select = document.getElementById('selectBox');
    var delButton = document.getElementById('delete');

    function remove()
    {
        value = select.selectedIndex;
        select.removeChild(select[value]);
    }

    delButton.onclick = remove;    
}

Pour ajouter l'article, je créerais une deuxième boîte de sélection et:

var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');

function add()
{
    value1 = select2.selectedIndex;
    select.appendChild(select2[value1]);    
}

addSelect.onclick = add;

Pas jQuery cependant.

27
Adriana

Pour supprimer un article

$("select#mySelect option[value='option1']").remove(); 

Ajouter un article

$("#mySelect").append('<option value="option1">Option</option>');

Vérifier une option

$('#yourSelect option[value=yourValue]').length > 0;

Pour supprimer une option sélectionnée

$('#mySelect :selected').remove(); 
22
Usman Shaukat

Cela devrait le faire:

$('#selectBox').empty();
19
qwe

Je trouve le plugin jQuery select box manipulation utile pour ce genre de chose.

Vous pouvez facilement supprimer un élément par index, valeur ou expression régulière.

removeOption(index/value/regex/array[, selectedOnly])

Remove an option by
- index: $("#myselect2").removeOption(0);
- value: $("#myselect").removeOption("Value");
- regular expression: $("#myselect").removeOption(/^val/i);
- array $("#myselect").removeOption(["myselect_1", "myselect_2"]);

Pour supprimer toutes les options, vous pouvez faire $("#myselect").removeOption(/./);.

18
Zoredache

Ajouter/supprimer une valeur dynamiquement sans code dur:

// supprime la valeur de select dynamiquement

$("#id-select option[value='" + dynamicVal + "']").remove();

// Ajouter une valeur dynamique à sélectionner

$("#id-select").append('<option value="' + dynamicVal + '">' + dynamicVal + '</option>');
9

J'ai trouvé deux pages qui semblent utiles, c'est écrit pour ASP.Net, mais les mêmes choses devraient s'appliquer

  1. Comment ajouter/supprimer des éléments d'une liste déroulante à l'aide de jQuery
  2. Expressions de sélecteur jQuery
8
Zachary Yates

Juste pour augmenter cela pour ceux qui cherchent, vous pouvez aussi simplement:

$("#selectBox option[value='option1']").hide();

et

$("#selectBox option[value='option1']").show();
5
AA11oAKas
5
Anjuman

JavaScript

function removeOptionsByValue(selectBox, value)
{
  for (var i = selectBox.length - 1; i >= 0; --i) {
    if (selectBox[i].value == value) {
      selectBox.remove(i);
    }
  }
}

function addOption(selectBox, text, value, selected)
{
  selectBox.add(new Option(text, value || '', false, selected || false));
}

var selectBox = document.getElementById('selectBox');

removeOptionsByValue(selectBox, 'option3');
addOption(selectBox, 'option5', 'option5', true);
<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>	
</select>

jQuery

jQuery(function($) {
  $.fn.extend({
    remove_options: function(value) {
      return this.each(function() {
        $('> option', this)
          .filter(function() {
            return this.value == value;
          })
          .remove();
      });
    },
    add_option: function(text, value, selected) {
      return this.each(function() {
        $(this).append(new Option(text, value || '', false, selected || false));
      });
    }
  });
});

jQuery(function($) {
  $('#selectBox')
    .remove_options('option3')
    .add_option('option5', 'option5', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selectBox" id="selectBox">
    <option value="option1">option1</option>
    <option value="option2">option2</option>
    <option value="option3">option3</option>
    <option value="option4">option4</option>	
</select>

4
Ja͢ck

Je devais supprimer la première option d'une sélection, sans ID, seulement une classe, j'ai donc utilisé ce code avec succès:

$('select.validation').find('option:first').remove();
2
user3027485

Je veux juste suggérer une autre façon d’ajouter une option. Au lieu de définir les value et text comme chaîne, on peut également le faire:

var option = $('<option/>')
                  .val('option5')
                  .text('option5');

$('#selectBox').append(option);

Il s'agit d'une solution moins sujette aux erreurs lors de l'ajout dynamique des valeurs et du texte des options. 

0
polkduran

Si quelqu'un a besoin de supprimerTOUTESoptions à l'intérieur d'une sélection, j'ai effectué une petite fonction.

J'espère que tu trouves cela utile

var removeAllOptionsSelect = function(element_class_or_id){
    var element = $(element_class_or_id+" option");
    $.each(element,function(i,v){
        value = v.value;
        $(element_class_or_id+" option[value="+value+"]").remove(); 
    })
}

Seulement avoir à courir 

removeAllOptionsSelect("#contenedor_modelos");
0
daronwolff

c'est la boîte de sélection html

<select name="selectBox" id="selectBox">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>
<option value="option4">option4</option>    
</select>

lorsque vous souhaitez supprimer et ajouter totalement l'option de la zone de sélection, vous pouvez utiliser ce code

$("#selectBox option[value='option1']").remove();
$("#selectBox").append('<option value="option1">Option</option>');

parfois nous avons besoin de masquer et d'afficher l'option de la zone de sélection, mais pas de la supprimer, vous pouvez utiliser ce code

 $("#selectBox option[value='option1']").hide();
 $("#selectBox option[value='option1']").show();

parfois besoin de supprimer l'option sélectionnée de la zone de sélection, puis

$('#selectBox :selected').remove();
$("#selectBox option:selected").remove();

lorsque vous devez supprimer toutes les options, alors ce code

('#selectBox').empty();

quand besoin première option ou dernier alors ce code

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
0
Shafiqul Islam