在不知道选择ID的情况下从Bootstrap Select获取值

时间:2019-12-11 07:57:28

标签: javascript jquery bootstrap-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,我需要在其中获取以前选择的值,并添加另一个(新)从外部推送的值。问题是:我不知道此选择的#id,因为它是随机生成的,只有它的.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());即可。有人可以告诉我为什么在使用该类时没有得到价值吗?

1 个答案:

答案 0 :(得分:1)

使用类作为选择器时,您可能会收到列表。您需要在列表上循环并推送值。

尝试一下:

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

请注意,如果您也可以共享HTML,我们将能够对其进行正确的调试/测试。

相关问题