如何使用Javascript从multi-select获取所有选定选项文本

如何使用Javascript从multi-select获取所有选定选项文本,javascript,jquery,select,Javascript,Jquery,Select,我在“多重选择”中的“获取所有选定项”选项中遇到问题 <select multiple="" title="" class="" id="fm_delivery_or_collection" name="fm_fields[fm_delivery_or_collection][]"> <option value="90">Delivery or Collection1</option> <option value="91">Delivery

我在“多重选择”中的“获取所有选定项”选项中遇到问题

<select multiple="" title="" class="" id="fm_delivery_or_collection" name="fm_fields[fm_delivery_or_collection][]">
  <option value="90">Delivery or Collection1</option>
  <option value="91">Delivery or Collection2</option>
  <option value="92">Delivery or Collection3</option>
</select>
Bellow是我的代码,它只返回我第一个选择的选项

var select = form.find('select')

for (var i = 0; i < select.length; i++) 
        {
            var s_id = jQuery(select[i]).attr('id');
            var str="",i;

            var e = document.getElementById(s_id);
            var strUser = e.options[e.selectedIndex].text;

            var name = jQuery(select[i]).attr('name')
            var str1 = jQuery(select[i]).attr('id').replace("fm_"," ")
            requestString += "<b>"+str1.replace(/_/g," ")+"</b>" + ':' +strUser+"<br>";
        }
因此,请建议我如何获取所有选择的选项文本以及我在哪里出错?

试试这个

$("#fm_delivery_or_collection option").each(function(){
    if($(this).attr('selected') == 'selected')
    {
        var name = $("#fm_delivery_or_collection").attr('name')
        var str1 = $("#fm_delivery_or_collection").attr('id').replace("fm_"," ")
        requestString += "<b>"+str1.replace(/_/g," ")+"</b>" + ':' +strUser+"<br>";
     }
})
它将返回所选值的数组

通过使用Jquery

从select调用的val函数将返回一个数组(如果是倍数)。

您的评论请告诉我如何获取所有选定选项文本:

希望对你有所帮助

现在把所有的都排在一行

var text = $('#selector option:selected').toArray().map(item => item.text).join();
它是这样返回的:

text1,text2,text3,text4

只需添加以下代码行:-

var reciever= jQuery('#to_select option:selected').toArray().map(item => item.text).join();
/* alert(reciever); */

选择多个或选择[select.selectedIndex]的值是一个数组…答案过于复杂。您可以使用.map获取所有选定的选项文本$select:selected.mapfunction i,元素{return jquerylement.text;}.get;查看您的迭代—您正在迭代选项,而选项没有id和名称。你们能看到吗?你们可以加上。家长在那个里,试着用它。哦,是的,你们是对的@Jai…thanx的建议…我现在编辑好了好的和简单的解决方案。如果需要不同的输出,join将接受分隔符作为参数。例如,连接“|”,将输出text1 | text2 | text3 | text4。还有一点小小的改进:jQuery建议使用$'selector'.find'option:selected',因为单独按ID搜索依赖于document.getElementById,这非常快,而完整选择器不依赖。如果选择器引用了一个select标记,您还可以从选择器中删除不必要的选项以提高效率:
$("#fm_delivery_or_collection option:selected").each(function () {
   var $this = $(this);
   if ($this.length) {
    var selText = $this.text();
    console.log(selText);
   }
});
 $("#id :selected").each(function (i,sel) {
   alert($(sel).text());
 });
$("#selection option:selected").each(function () {
   var $this = $(this);
   if ($this.length) {
    var selText = $this.text();
    console.log(selText);
    $('#selected').append(selText+', ');
  }
});
var text = $('#selector option:selected').toArray().map(item => item.text).join();
text1,text2,text3,text4
var reciever= jQuery('#to_select option:selected').toArray().map(item => item.text).join();
/* alert(reciever); */