我使用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"]
答案 0 :(得分:2)
您可以做的是将文本从“-”分割成第0个元素。这意味着拆分后便有了一个数组。
例如:
var dataselected = $.map($(".select2 option:selected"),function (el, i){
var elemText = $(el).text().split('-')[0]; //like this
return elemText;
});
答案 1 :(得分:0)
您必须返回值而不是文本内容,请使用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>