如何在选择器中添加/删除选项? [复制]

Posted

技术标签:

【中文标题】如何在选择器中添加/删除选项? [复制]【英文标题】:How can I add/remove Options in a Selector? [duplicate] 【发布时间】:2018-03-16 17:02:00 【问题描述】:

如何在选择器中添加或删除选项,我有这样的选择器:

<select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>

我想要添加一个添加按钮和一个删除按钮。

添加按钮可以添加一个新选项,如果我选择一个选项,我可以按下删除以自动删除它

$('select[name=things]').change(function() 
  if ($(this).val() == '') 
    var newThing = prompt('Enter a name for the new thing:');
    var newValue = $('option', this).length;
    $('<option>')
      .text(newThing)
      .attr('value', newValue)
      .insertBefore($('option[value=]', this));
    $(this).val(newValue);
  
);
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<select name="things">
    <option value="1">Thing One</option>
    <option value="2">Thing Two</option>
    <option value="3">Thing Three</option>
    <option value="">New Thing&hellip;</option>
</select>

这可能对我有用,但我希望在 + 按钮和删除按钮上添加新事物。

你们觉得呢?

【问题讨论】:

【参考方案1】:

第一个问题是您需要将"" 添加到[value=] 所以它将是[value=""]

我还添加了一个删除按钮。 (不确定这是否是您想要的方式,但它可能会对您有所帮助)

演示

$('select[name=things]').change(function() 
  if ($(this).val() == '') 
    var newThing = prompt('Enter a name for the new thing:');
    var newValue = $('option', this).length;
    $('<option>')
      .text(newThing)
      .attr('value', newValue)
      .insertBefore($('option[value=""]', this));
    $(this).val(newValue);
  
);

$(".rOption").click(function() 
  var v = $("select[name=things]").val();
  if (v != null) 
    $("select[name=things] option:selected").remove();
  
)
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<select name="things">
    <option value="1">Thing One</option>
    <option value="2">Thing Two</option>
    <option value="3">Thing Three</option>
    <option value="">New Thing&hellip;</option>
</select>

<button class="rOption">Remove option</button>

演示2

$('.addOption').click(function() 
  var obj = $('select[name="things"]')
  var newThing = prompt('Enter a name for the new thing:');
  var newValue = $('option', obj).length;
  $('<option>')
    .text(newThing)
    .attr('value', newValue)
    .insertAfter($('option:last', obj));
  obj.find('option').last().prop('selected',true);
);

$(".rOption").click(function() 
  var v = $("select[name=things]").val();
  if (v != null) 
    $("select[name=things] option:selected").remove();
  
)
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<select name="things">
    <option value="1">Thing One</option>
    <option value="2">Thing Two</option>
    <option value="3">Thing Three</option>
</select>

<button class="addOption">+</button>
<button class="rOption">-</button>

【讨论】:

这很好,但我该如何做新事物部分?把它从选项中去掉,让它像一个 + 按钮?当我按下它时,弹出窗口会出现我添加文本并按确定并将其添加到选择器 @AndreiRef 检查演示 2 你知道为什么当我创建选项并选择它以将其添加到表 TD 中。如果我添加了 5 个选项并选择第二个。它将数字 2 放在 TD 中,而不是 Option 包含的内容 @AndreiRef 我猜是因为您插入了选项的值,请尝试使用 .text() 让我们continue this discussion in chat.【参考方案2】:

试试这个。首先将 ID 放在您的下拉列表中。然后使用我展示的过程附加它

for($x = 2; $x < 4; $x++)
  $('#mySelect').append($('<option>', 
    value: $x,
    text: $x
  ));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <select id="mySelect">
  <option value ="1"> 1</option>
  </select>

【讨论】:

这如何适用于 OP 的问题/问题? @CarstenLøvboAndersen 它是选择器上的基本选项。它表明您可以使用变量将任何值添加到选项框。从那里他可以得出他将如何传递选项的值和文本

以上是关于如何在选择器中添加/删除选项? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

CircleImage 在选择器中选择一个选项并添加到列表后不断改变颜色

如何在引导选择选择器中为选项(下拉菜单)设置固定宽度

在本机基本选择器中添加默认选择器项目

JQuery:如何抓取选择器中选择的内容

如何在 Jquery 选择器中使用变量? [复制]

从数字选择器中删除选择