在不知道 select 的 id 的情况下从 Bootstrap Select 获取值

Getting Values from Bootstrap Select without knowing the id of the select

setTimeout(function(){
  $('#noIdea').append($('<option>').val("ddd").text("Value 4"))
}, 1000);

setTimeout(function(){
  let newval = "ddd";
  let oldval = [];
  oldval.push($('input[type="text"].mySelect').val());
  //oldval = ($('#noIdea').val());
  oldval.push(newval);
  console.log (oldval)
  $('.selectpicker').selectpicker('refresh');
  $('.selectpicker').selectpicker('val', oldval);
}, 2000);
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.12/dist/js/bootstrap-select.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.13.12/dist/css/bootstrap-select.min.css">

<select multiple id="noIdea" class="selectpicker mySelect" data-live-search="true">
<option value="aaa" selected>Value 1</option>
<option value="bbb" selected>Value 2</option>
<option value="ccc">Value 3</option>
</select>

我有一个 Bootstrap Select,我需要在其中获取之前选择的值并添加另一个(新)值作为从外部推送的 selected。问题是:我不知道这个 select 的 #id,因为它是随机生成的,只知道它的 .class。但是 class 是独一无二的,因为我在这个页面上只有一个 .mySelect

所以我做的是:

let oldval = [];
oldval.push($('input[type="text"].mySelect').val()); //<- That is empty
oldval.push(newValueIreceived);
$('.mySelect').selectpicker('refresh');
$('.mySelect').selectpicker('val', oldval);

使用 oldval.push($('#id').val()); 它会起作用。谁能告诉我为什么我在使用 class 时没有得到值?

由于您使用 class 作为选择器,您可能会收到 return 中的列表。您需要循环列表并推送值。

试试这个:

let oldval = [];
$('input[type="text"].mySelect').each(function () {
    if ($(this).val()){
        oldval.push($(this).val());
    }
});

请注意,如果您也可以分享您的 HTML,我们将能够正确地 debug/test。