【问题标题】:The value show in the multi-select function not properly多选功能中的值显示不正确
【发布时间】:2021-05-03 08:21:26
【问题描述】:

我在多选功能中有两个问题:

i)第一个问题,我设置的值如果点击Show Volvo and OpelShow Volvo and Saav按钮,会按照多选框中显示的值。现在的错误是如果点击Show Volvo and Opel按钮,它可以显示正确的值,但如果点击Show Volvo and Saav按钮,值不能正确显示。

ii)第二个问题,如果我点击了Show Volvo and Opel,它只能在多选框中显示checked的值,而name的值不能在多选框中显示,例如,我需要显示姓名Volvo, Opel,如下图所示:

以下是我的示例工作编码:

$(document).ready(function(){
     $('#cars').multiselect({
      nonSelectedText: 'Choose the car',
      enableFiltering: true,
      enableCaseInsensitiveFiltering: true,
      buttonWidth:'100%'
     });
    });
  
  

function sendFunc(){
$(this).prop('checked',false);
  var cars = [];
  var cars = ["volvo", "opel"];

for(var i = 0; i < cars.length;i++) {
    $(':checkbox[value="'+cars[i]+'"]').prop('checked', 'checked');
}
  }
  
function sendFunc_2(){
$(this).prop('checked',false);
  var cars = [];
  var cars = ["volvo", "saab"];

for(var i = 0; i < cars.length;i++) {
    $(':checkbox[value="'+cars[i]+'"]').prop('checked', 'checked');
}
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script>  
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />

<select id="cars" value="" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>
<br><br><br>
<button type="button" class="btn btn-sm btn-primary create-permission" id="btn_save" value="Save" onclick="sendFunc()">Show Volvo and Opel</button>
<button type="button" class="btn btn-sm btn-primary create-permission" id="btn_save" value="Save" onclick="sendFunc_2()">Show Volvo and Saav</button>

希望有人能指导我如何解决这个问题。

【问题讨论】:

    标签: javascript jquery multi-select bootstrap-multiselect


    【解决方案1】:

    您可以遍历选择框中的选项以及 value 匹配设置 prop('selected', true); 的位置,然后使用 $('#cars').multiselect('refresh') 刷新您的 mutliselect 。

    演示代码

    $(document).ready(function() {
      $('#cars').multiselect({
        nonSelectedText: 'Choose the car',
        enableFiltering: true,
        enableCaseInsensitiveFiltering: true,
        buttonWidth: '100%'
      });
    });
    
    
    
    function sendFunc() {
      call_to_deleselect();
      var cars = ["volvo", "opel"];
      call_to_set_Selected(cars)
    }
    
    function sendFunc_2() {
      call_to_deleselect();
      var cars = ["volvo", "saab"];
      call_to_set_Selected(cars)
    }
    
    function call_to_deleselect() {
      //remove all selected
      $('option', $('#cars')).each(function(element) {
        $(this).removeAttr('selected').prop('selected', false);
      });
    }
    
    function call_to_set_Selected(cars) {
      for (var i = 0; i < cars.length; i++) {
        //add option selected
        $('option[value="' + cars[i] + '"]', $('#cars')).prop('selected', true);
      }
      //or use  $('#cars').multiselect('select',cars);
      //refresh mutlislect
      $('#cars').multiselect('refresh');
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />
    
    <select id="cars" value="" multiple>
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="opel">Opel</option>
      <option value="audi">Audi</option>
    </select>
    <br><br><br>
    <button type="button" class="btn btn-sm btn-primary create-permission" id="btn_save" value="Save" onclick="sendFunc()">Show Volvo and Opel</button>
    <button type="button" class="btn btn-sm btn-primary create-permission" id="btn_save" value="Save" onclick="sendFunc_2()">Show Volvo and Saav</button>

    【讨论】:

    • 感谢您的回答,但我测试您的代码无法正常工作。
    • 什么不起作用?另外,控制台内是否有任何错误?
    • 我想我知道会发生什么。你的回答是正确的。谢谢
    • 你能帮我解决这个问题吗? stackoverflow.com/questions/67380084/… 谢谢。
    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多