【问题标题】:Select2 get text onchange -comma seperatedSelect2 获取文本 onchange -逗号分隔
【发布时间】:2019-03-15 05:54:50
【问题描述】:

我使用 select2 来获取选择框中的值,但我的问题是,我只想获取选择框中的第一项,忽略逗号分隔的项目,如下所示:

$(function() {

  $('.select2').select2({
    theme: "classic",

  }).on('change', function(e) {
    var dataselected = $.map($(".select2 option:selected"), function(el, i) {
      return $(el).text();
    });

  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />

<select class="form-control select2" multiple="multiple">
  <option value="donut" id="first">donut-milk</option>
  <option value="orange" id="first">orange-milk</option>
</select>

这会产生:

["donut-milk","orange-milk"]

我怎样才能实现这个输出:

["donut","orange"]

【问题讨论】:

  • 你想去掉-后面的字符串的选中值吗??

标签: javascript jquery-select2


【解决方案1】:

您可以做的是,当您将文本从“-”中拆分出来并获得第 0 个元素时。这意味着在你拆分后你有一个数组。

举个例子:

  var dataselected = $.map($(".select2 option:selected"),function (el, i){
        var elemText = $(el).text().split('-')[0]; //like this
        return elemText;
  });

【讨论】:

    【解决方案2】:

    您必须返回值而不是文本内容,使用val() 方法或使用value 属性来获取值。

    var dataselected = $.map($(".select2 option:selected"),function (el, i){
        return  $(el).val();
    });
    

    $(function() {
    
      $('.select2').select2({
        theme: "classic",
    
      }).on('change', function(e) {
        var dataselected = $.map($(".select2 option:selected"), function(el, i) {
          return $(el).val();
        });
    
        console.log(dataselected);
    
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
    
    <select class="form-control select2" multiple="multiple">
      <option value="donut" id="first">donut-milk</option>
      <option value="orange" id="first">orange-milk</option>
    </select>

    var dataselected = $.map($(".select2 option:selected"),function (el, i){
        return  el.value;
    });
    

    $(function() {
    
      $('.select2').select2({
        theme: "classic",
    
      }).on('change', function(e) {
        var dataselected = $.map($(".select2 option:selected"), function(el, i) {
          return el.value;
        });
    
        console.log(dataselected);
    
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
    
    <select class="form-control select2" multiple="multiple">
      <option value="donut" id="first">donut-milk</option>
      <option value="orange" id="first">orange-milk</option>
    </select>

    或者直接从select标签中获取值。

    var dataselected = $(".select2").val()
    

    根据jQuery docs of val() method

    当集合中的第一个元素是 select-multiple 时(即,具有 multiple 属性集的 select 元素),.val() 返回一个包含每个选定选项值的数组。


    仅供参考: id 在上下文中应该是唯一的,因此请避免使用重复的 id。对于分组使用class 属性。


    更新:如果您想从文本内容中提取第一部分(- 之前),那么您可以使用 String#split 方法执行类似的操作。

    var dataselected = $.map($(".select2 option:selected"), function(el, i) {
      return $(el).text().split('-')[0];
      // or
      // return $(el).text().split('-').shift();
    });
    

    $(function() {
    
      $('.select2').select2({
        theme: "classic",
    
      }).on('change', function(e) {
        var dataselected = $.map($(".select2 option:selected"), function(el, i) {
          return $(el).text().split('-')[0];
          // or
          // return $(el).text().split('-').shift();
        });
    
        console.log(dataselected);
    
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
    
    <select class="form-control select2" multiple="multiple">
      <option value="donut" id="first">donut-milk</option>
      <option value="orange" id="first">orange-milk</option>
    </select>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 2018-11-09
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多