选择和取消选择时从选择框中获取值

Posted

技术标签:

【中文标题】选择和取消选择时从选择框中获取值【英文标题】:Get values from select box when select and unselect 【发布时间】:2018-09-19 14:22:22 【问题描述】:

当您使用选择选项时如何从select box 中获取值,以及如何在取消选择选项时获取值

我正在使用此代码

$('.select2-multiple').select2MultiCheckboxes(
    placeholder: "Choose multiple elements",
)

我已尝试使用以下代码为change event

    $("#sel-01").change(function()  
        
         var  value =  this.value;
         if (value != "") 
         
            alert("Selected")
         
         else
         
            alert("Not selected")
         
    );

JSFiddle

/**
 * jQuery Select2 Multi checkboxes
 * - allow to select multi values via normal dropdown control
 * 
 * author      : wasikuss
 * repo        : https://github.com/wasikuss/select2-multi-checkboxes/tree/select2-3.5.x
 * inspired by : https://github.com/select2/select2/issues/411
 * License     : MIT
 */

jQuery(function($) 
  $('.select2-multiple').select2MultiCheckboxes(
    placeholder: "Choose multiple elements",
  )

  $("#sel-01").change(function() 
    var value = this.value;
    if (value != "") 
      alert("Selected")
     else 
      alert("Not selected")
    
  );

);
.select2-result-label .wrap:before 
  position: absolute;
  left: 4px;
  font-family: fontAwesome;
  color: #999;
  content: "\f096";
  width: 25px;
  height: 25px;


.select2-result-label .wrap.checked:before 
  content: "\f14a";


.select2-result-label .wrap 
  margin-left: 15px;



/* not required css */

.row 
  padding: 10px;
<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.1.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.4/select2.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.4/select2.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
<script type="text/javascript" src="https://rawgit.com/wasikuss/select2-multi-checkboxes/select2-3.5.x/select2.multi-checkboxes.js"></script>
<div class="row">
  <select name="sel-01" id="sel-01" class="select2-multiple">
    <option></option>
    <option value="100">india</option>
    <option value="200">California</option>
    <option value="300">New York</option>
    <option value="400">Texas</option>
    <option value="500">Wyoming</option>
  </select>
</div>

【问题讨论】:

它有更改事件吗?不知道图书馆是什么,所以无能为力,也不会去谷歌搜索可能列出它的文档。 @epascarello 是的,我已经更新了问题 RTM: select2.org/programmatic-control/events 【参考方案1】:

我在这里添加了一个选择器来获取选择元素内的所有选项:http://jsfiddle.net/z7aL1gf6/78/

var options = Array.from($('#sel-01 option'));
     var checked = [];
     var unchecked = [];
     options.forEach(opt => 
       if (opt.className === 'checked') 
        checked.push(opt.value)
       else 
        unchecked.push(opt.value)
      
     );
     // check console: View -> Developer Tools
     console.log('CHECKED:',checked);
     console.log('UNCHECKED',unchecked);

如果这能让您更接近您的解决方案,请告诉我。

【讨论】:

你好,戴夫,为什么在选择和取消选择选项时显示 event. added 是空错误,【参考方案2】:

您必须删除 onchange 事件,并在您的 select2MultiCheckboxes 中添加一个函数,

jQuery(function($) 
      $('.select2-multiple').select2MultiCheckboxes(
        placeholder: "Choose multiple elements",
        formatSelection: function(selected)  
            console.log(selected); // you will get the dropdown selected values in array format.
            return selected;
          
      );

希望对你有帮助。

【讨论】:

【参考方案3】:

这对你很有效:

我已使用selected.added 获取您的选定值

通过将 each 函数与添加的类 .checked 结合起来,我得到了 未选择的值

为了获得所选值的总值,我将数组与for loup 组合在一起。

/**
 * jQuery Select2 Multi checkboxes
 * - allow to select multi values via normal dropdown control
 * 
 * author      : wasikuss
 * repo        : https://github.com/wasikuss/select2-multi-checkboxes/tree/select2-3.5.x
 * inspired by : https://github.com/select2/select2/issues/411
 * License     : MIT
 */

jQuery(function($) 
  $('.select2-multiple').select2MultiCheckboxes(
    placeholder: "Choose multiple elements"
  );

  $('.select2-multiple').on('change', function(selected) 
    var selected = selected.added,
      UnSelect = [],
      total = 0;
    for (var i = 0; i < selected.length; i++) 
      total += selected[i] << 0;
    
    $(this).find('option').each(function() 


      if (!$(this).hasClass('checked')) 
        var UnS = $(this).attr('value');
        UnSelect.push(UnS);
      
    );
    console.log('Unselected = ' + UnSelect, 'Selected = ' + selected);
    console.log(total);
  );

);
.select2-result-label .wrap:before 
  position: absolute;
  left: 4px;
  font-family: fontAwesome;
  color: #999;
  content: "\f096";
  width: 25px;
  height: 25px;


.select2-result-label .wrap.checked:before 
  content: "\f14a";


.select2-result-label .wrap 
  margin-left: 15px;



/* not required css */

.row 
  padding: 10px;
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.4/select2.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rawgit.com/wasikuss/select2-multi-checkboxes/select2-3.5.x/select2.multi-checkboxes.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.5.4/select2.min.js"></script>


<div class="row">
  <select name="sel-01" id="sel-01" class="select2-multiple">
    <option value="100">india</option>
    <option value="200">California</option>
    <option value="300">New York</option>
    <option value="400">Texas</option>
    <option value="500">Wyoming</option>
  </select>
</div>

如果你愿意,可以给你一个fiddle。

希望这对您有所帮助。

【讨论】:

你好,韦伯感谢您的回答它工作正常。现在如何添加值? @ManjunathCa 在哪里增加价值。? 我已经更新了问题,将选项值字符串更改为整数,我需要添加选定的值, 我也更改了值,但是您想要什么,您想将选定的值添加到一个值。??或者只是将它们结合起来。?我不明白。 我想把选中的值加到一个值上,

以上是关于选择和取消选择时从选择框中获取值的主要内容,如果未能解决你的问题,请参考以下文章

根据选择一个列表框中的项目选择/取消选择多个列表框中的项目 - C# Windows 窗体

选择/取消选择多个列表框中的多个项目

根据在选择/下拉框中而不是复选框中选择的值动态获取和显示地图图层

WPF:停止或反转列表框中的选择更改

从选择框中获取选项值并粘贴到 href

当所有选择框都有一个名称时,如何从 DOM 添加/删除选择框,以便在提交时从活动选择框获得值?