Usuwanie elementu z wybranego pola


269

Jak mogę usunąć lub dodać elementy z wybranego pola? Korzystam z jQuery, co powinno ułatwić zadanie. Poniżej znajduje się przykładowe pole wyboru.

<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>

Odpowiedzi:


491

Usuń opcję:

$("#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>

Dodaj opcję:

$("#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>


7
Jeśli musisz usunąć opcję i wybrać inną: $ ('# selectBox'). Val ('opcja2'). Find ('opcja [wartość = „opcja1”] ”). Remove ();
Radu Maris,

8
Szczerze mówiąc, myślę, że sposób manipulowania polami wyboru za pomocą javascript jest jedną z najbardziej zagmatwanych rzeczy, nawet jeśli masz dość dobrą znajomość selektorów i DOM.
Tacroy,

79

Możesz usunąć wybrany element za pomocą:

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

Jest to przydatne, jeśli masz listę, a nie listę rozwijaną.


Usuwa wszystko dla mnie ... Czekaj, używam Wybierz z wieloma atrybutami. Jak mogę go usunąć z wielokrotnego wyboru?
Akshay

27
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;    
}

Aby dodać element, utworzę drugie pole wyboru i:

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

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

addSelect.onclick = add;

Ale nie jQuery.


4
@JBeckton: patrząc wstecz na to napisane 4 lata temu, śmieję się z ciebie i masz rację :)
Adriana

25

Aby usunąć element

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

Aby dodać element

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

Aby sprawdzić opcję

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

Aby usunąć wybraną opcję

$('#mySelect :selected').remove(); 

20

To powinno to zrobić:

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

18

Uważam, że wtyczka do manipulacji polem wyboru jQuery jest przydatna w tego typu rzeczach.

Możesz łatwo usunąć element według indeksu, wartości lub wyrażenia regularnego.

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"]);

Aby usunąć wszystkie opcje, możesz to zrobić $("#myselect").removeOption(/./);.


5
-1, ponieważ można to zrobić bez wtyczki przy użyciu jQuery i programowania podstawowego.
Slopeside Creative

ᕀ 1 po co wymyślać koło
John Hascall,

9

Dynamiczne dodawanie / usuwanie wartości bez stałego kodu:

// dynamicznie usuwaj wartość z zaznaczenia

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

// Dodaj wartość dynamiczną, aby wybrać

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



5

Aby to powiększyć, dla każdego, kto może wyglądać, możesz także:

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

i

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

Myślę, że to zależy od przeglądarki. Może to po prostu wyłączyć tę konkretną opcję.
Adam Ware

Nie polecam tej metody, ponieważ jest ona specyficzna dla przeglądarki.
Scott Shaw-Smith

To jest stary post, ale chciałbym to skomentować. Chociaż jest to bardzo fajny sposób radzenia sobie z wybraną opcją, nie jest to zalecane, ponieważ IE jej nie obsługuje
Ahmed Ali,

4

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>


2

Musiałem usunąć pierwszą opcję z zaznaczenia, bez identyfikatora, tylko klasę, więc z powodzeniem wykorzystałem ten kod:

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

0

Chcę tylko zasugerować inny sposób dodania option. Zamiast ustawiania valuei textjako łańcucha można również wykonać:

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

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

Jest to mniej podatne na błędy rozwiązanie przy dynamicznym dodawaniu wartości opcji i tekstów.


Nie jestem downvoter, ale wygląda na to, że odpowiedziałeś PO w połowie, jak dodać opcję, ale nie jak ją usunąć.
John Odom,

0

Jeśli ktoś potrzebuje usunąć WSZYSTKIE opcje wewnątrz zaznaczenia, zrobiłem małą funkcję.

Mam nadzieję, że uznasz to za przydatne

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(); 
    })
}

Tylko trzeba biec

removeAllOptionsSelect("#contenedor_modelos");

2
Czy wynik nie jest równy $('#contenedor_modelos').empty();? Miło jest jednak zobaczyć jakąś akcję :)
MineSweeper

0

to jest pole wyboru 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>

jeśli chcesz całkowicie usunąć i dodać opcję z pola wyboru, możesz użyć tego kodu

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

Czasami musimy ukryć i pokazać opcję z pola wyboru, ale nie usuwaj, możesz użyć tego kodu

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

kiedyś trzeba usunąć wybraną opcję z pola wyboru

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

kiedy musisz usunąć wszystkie opcje, to ten kod

('#selectBox').empty();

kiedy potrzebna jest pierwsza opcja, a potem ten kod

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.