如何获取所有选定的选项文本形式多选择使用Javascript

use*_*123 18 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 or Collection2</option>
  <option value="92">Delivery or Collection3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

贝娄是我的代码,它只返回我第一个选择的选项

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>";
        }
Run Code Online (Sandbox Code Playgroud)

所以请建议我如何获得所有选择的选项文本以及我犯错误的地方?

Jai*_*Jai 35

您的评论please suggest me how can i get all selected option text,所以你可以试试这个:

$("#fm_delivery_or_collection option:selected").each(function () {
   var $this = $(this);
   if ($this.length) {
    var selText = $this.text();
    console.log(selText);
   }
});
Run Code Online (Sandbox Code Playgroud)


pei*_* F. 16

现在一站式完成

var text = $('#selector option:selected').toArray().map(item => item.text).join();
Run Code Online (Sandbox Code Playgroud)

它返回像这样:

text1,text2,text3,text4
Run Code Online (Sandbox Code Playgroud)

  • 很好又简单的解决方案。如果您需要不同的输出,join() 接受分隔符作为参数。例如 join(' | '),将输出“text1 | text2 | text3 | text4”。还有一个小小的改进:jQuery 建议使用 $('#selector').find('option:selected'),因为仅通过 ID 搜索依赖于 document.getElementById,这非常快,而完整选择器则不然。如果 #selector 引用选择标签,您还可以从选择器中删除不必要的“选项”以提高效率:https://learn.jquery.com/performance/optimize-selectors/ (2认同)

Tal*_*lha 11

// Return an array of the selected opion values
// select is an HTML select element
function GetSelectValues(select) {
  var result = [];
  var options = select && select.options;
  var opt;

  for (var i=0, iLen=options.length; i<iLen; i++) {
    opt = options[i];

    if (opt.selected) {
      result.push(opt.value || opt.text);
    }
  }
  return result;
}
Run Code Online (Sandbox Code Playgroud)

将此功能传递给您的选择框如...

var selectBox = document.getElementsById('fm_delivery_or_collection');
alert(GetSelectValues(selectBox ));
Run Code Online (Sandbox Code Playgroud)

它将返回所选值的数组

通过使用Jquery

$('select#fm_delivery_or_collection').val()
Run Code Online (Sandbox Code Playgroud)

如果它是一个倍数,那么val从函数调用的函数select将返回一个数组.