Видалення елемента з вибраного поля


269

Як видалити елементи з пункту вибору або додати до них елементи? Я запускаю jQuery, якщо це полегшить завдання. Нижче наведено приклад вікна вибору.

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

Відповіді:


491

Видалити варіант:

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

Додати опцію:

$("#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
Якщо вам потрібно видалити параметр і вибрати інше: $ ('# selectBox'). Val ('option2'). Find ('option [value = "option1"]'). Remove ();
Раду Маріс

8
Чесно кажучи, я вважаю, що спосіб вибору вікон маніпулюється через javascript - це одна з найбільш заплутаних речей, навіть коли ви досить добре розумієте селекторів та DOM.
Tacroy

79

Ви можете видалити вибраний елемент за допомогою цього:

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

Це корисно, якщо у вас є список, а не спадне меню.


Це видаляє все для мене ... Зачекайте, я використовую Select з декількома атрибутами. Як я можу видалити його з декількох вибраних?
Акшай

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

Щоб додати елемент, я створив би друге поле вибору та:

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

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

addSelect.onclick = add;

Не jQuery, хоча.


4
@JBeckton: озираючись на це написане 4 роки тому, я сміюся над собою, і ти маєш рацію :)
Адріана

25

Щоб видалити предмет

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

Щоб додати елемент

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

Щоб перевірити варіант

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

Щоб видалити вибрану опцію

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


18

Я вважаю плагін маніпуляції jQuery поле вибору корисним для цього типу речей.

Ви можете легко видалити елемент за індексом, значенням або регулярним виразом.

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

Щоб видалити всі параметри, ви можете зробити $("#myselect").removeOption(/./);.


5
-1 тому, що це можна зробити без плагіна за допомогою jQuery та базового програмування.
Slopeside Creative

ᕀ 1 навіщо винаходити колесо
Джон Хаскалл

9

Динамічне додавання / видалення значення без жорсткого коду:

// видалити значення з вибору динамічно

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

// Додати динамічне значення для вибору

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



5

Просто для збільшення цього для всіх, хто шукає, ви також можете:

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

і

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

Я думаю, що це залежить від браузера. Це може просто відключити саме цей варіант.
Adam Ware

Я не рекомендую цей метод, оскільки він є специфічним для браузера.
Скотт Шоу-Сміт

Це стара публікація, але я хотів би прокоментувати це. Хоча це дуже приємний спосіб впоратися з вибором варіанту, він не рекомендується, оскільки IE не підтримує його
Ахмед Алі

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

Мені довелося видалити першу опцію з вибору, без ідентифікатора, лише класу, тому я успішно використав цей код:

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

0

Я просто хочу запропонувати інший спосіб додати option. Замість того, щоб встановити рядок valueі textяк рядок, ви також можете зробити:

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

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

Це менш схильне до помилок рішення, коли динамічно додавати значення параметрів та тексти.


Я не прихильник, але, здається, ви відповіли ОП на півдорозі, як додати варіант, а не як видалити варіант.
Джон Одом

0

Якщо комусь потрібно видалити ВСІ параметри всередині вибору, я зробив функцію litle.

Сподіваюсь, вам це стане в нагоді

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

Тільки бігати доведеться

removeAllOptionsSelect("#contenedor_modelos");

2
Чи не результат є рівним $('#contenedor_modelos').empty();? Приємно побачити деякі дії, хоча :)
MineSweeper

0

це поле для вибору 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>

коли ви хочете повністю видалити та додати опцію з поля вибору, ви можете використовувати цей код

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

колись нам потрібно сховати і показати параметр у полі вибору, але не видаляти, тоді ви можете використовувати цей код

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

колись потрібно видалити вибрану опцію з поля вибору

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

коли вам потрібно видалити всі параметри, тоді цей код

('#selectBox').empty();

коли потрібно спочатку вибрати або останнє, то цей код

$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.