【问题标题】:How to obtain the selected optgroup and options in array with JavaScript or jQuery如何使用 JavaScript 或 jQuery 获取数组中选定的 optgroup 和选项
【发布时间】:2014-01-03 15:16:18
【问题描述】:

我们如何使用 JavaScript 或 jQuery 在数组中获取选定的 optgroup 和选项。我需要将 optgourp 和 option 都放入一个数组中,但只有选定的。

<select id="release">
    <optgroup label="group1">
        <option>option 1</option>
        <option>option 2</option>
    </optgroup>
    <optgroup label="group2">
        <option>option 3</option>
        <option>option 4</option>
    </optgroup>
</select>
var releasearr = {};
var theSelect = document.getElementById('release');
var optgroups = theSelect.getElementsByTagName('optgroup');
for (var i = 0; i < optgroups.length; i++) {
    releasearr[optgroups[i].getAttribute('label')] = [];
    var options = optgroups[i].getElementsByTagName('option');
    for (var j = 0; j < options.length; j++) {
        releasearr[optgroups[i].getAttribute('label')].push(options[j].innerHTML);
    }
}
console.log(releasearr);

在 html 搜索按钮中

在 JavaScript 中

var requestString = "?re_type="+document.getElementById('route').value+"&platform="+document.getElementById('platform').value+"&baserelease="+document.getElementById('bsrel').value+"&release="+releasearr+"&release_type="+document.getElementById('type').value+"&rpd_bit="+document.getElementById('rpd_bit').value;;

并传递给url ='/rbusnp/controller/releasecompresult.php'+requestString;

在我得到 releasearr 的值中,[object object] 没有得到值

我为此下拉菜单使用多项选择。但是当我选择一个选项组和两个选项时,它只返回一个选项组和一个选项,如何获取多个选择的数组。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    试试这个,

    var releasearr = {};
    var theSelect = document.getElementById('release');
    var optgroups = theSelect.getElementsByTagName('optgroup');
    var arr = {};// object for selected options
    for (var i = 0; i < optgroups.length; i++) {
        l=optgroups[i].getAttribute('label');
        releasearr[l] = [];
        var options = optgroups[i].getElementsByTagName('option');
    
        for (var j = 0; j < options.length; j++) {
            releasearr[l].push(options[j].innerHTML);
            if(options[j].selected){ // check if options is selected
                arr[l]= [];// making array of optgroup
                arr[l].push(options[j].innerHTML);
            }
        }
    }
    console.log(releasearr);
    // selected options array
    console.log(arr);
    

    Demo

    使用jquery你可以试试这个,

    var arr= {};
    $('#release option:selected').each(function(){
        arr[$(this).closest('optgroup').attr('label')] = $(this).text();
    });
    console.log(arr);
    

    jQuery Demo

    更新您应该使用 JSON.stringify() 将您的 object 传递为 string 之类的,

    route=document.getElementById('route').value;
    platform=document.getElementById('platform').value;
    bsrel=document.getElementById('bsrel').value;
    type=document.getElementById('type').value;
    rpd_bit=document.getElementById('rpd_bit').value;
    
    var requestString = "?re_type="+route+"&platform="+platform+"&baserelease="+bsrel;
    requestString += "&release_type="+type+"&rpd_bit="+rpd_bit;
    requestString += "&release="+JSON.stringify(releasearr);// use stringify here
    

    要在selected option from optgroup 中选择所有option,试试这个,

    var arr= {};
    $('#release option:selected').each(function(){
        var newArr=[];
        $(this).closest('optgroup').find('option').each(function(){
            newArr.push($(this).text());
        });
        arr[$(this).closest('optgroup').attr('label')] = newArr;
    });
    console.log(arr);
    

    Demo 2

    【讨论】:

    • 感谢您的及时回复。当我提醒消息时,它显示 [object Object]。我怎样才能得到这些值?你能帮忙吗
    • 因为arrobject 所以它不会显示在alert 你可以签入console only
    • 当我进入 php 时,结果也以 release 形式出现:[object Object]] not getting values
    • 您如何在php 中发送arr?告诉我你的full code
    • 这是 js 文件中的搜索按钮 像这样发送var requestString = "?re_type="+document.getElementById('re_type').value+"&platform="+document.getElementById('platform').value+"&baserelease="+document.getElementById('baserelease').value+" &release="+releasearr+"&release_type="+document.getElementById('release_type').value+"&rpd_bit="+document.getElementById('rpd_bit').value;; url ='controller/releasecompresult.php'+requestString;
    【解决方案2】:

    在 Jquery 中非常简单:

    var $optionSelected = $('option:selected');
    var optGroup = $optionSelected.parents('optgroup');
    

    如果你有选择元素并使用 .find() 会更好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2011-05-22
      • 2015-03-04
      • 2021-07-17
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多