简体   繁体   English

如何从所选选项的下拉列表中读取数据选项卡 ID

[英]How to read Data tab ids from dropdown list of selected option

I Have Drop down Data tab ids as an array.我将下拉数据选项卡 ID 作为数组。 when i select option I want to get retrieve data tab ids.当我使用 select 选项时,我想获取检索数据选项卡 ID。

<select name="users[]" id="users" class="form-control " multiple="multiple">
    <option data-tab_ids="[1,2,3,4,5,6,7,8]" value="0">Admin</option>
    <option data-tab_ids="[9]" value="1">samjad</option>
    <option data-tab_ids="[2]" value="2">Mohamed Omar</option>
</select>

Since you have multiple option on select to get one array of all selected option ids you can use map method on selected options.由于您在select上有多个选项来获取所有选定选项 id 的一个数组,因此您可以对选定选项使用map方法。

 $("select").on('change', function() { const ids = $(this).find('option:selected').map(function() { return $(this).data('tab_ids') }).get(); console.log(ids) })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select name="users[]" id="users" class="form-control " multiple="multiple"> <option data-tab_ids="[1,2,3,4,5,6,7,8]" value="0">Admin</option> <option data-tab_ids="[9]" value="1">samjad</option> <option data-tab_ids="[2]" value="2">Mohamed Omar</option> </select>

You can reduce the selected options by filtering out the non-selected and building a list of data-tab_ids values.您可以通过过滤掉未选择的选项并构建data-tab_ids值列表来减少选择的选项。

 document.getElementById('users').addEventListener('change', function(e) { // Retrieved a list of all selected tab lists. let selected = Array.from(e.target.querySelectorAll('option')).reduce((res, opt) => { return opt.selected? res.concat(opt.getAttribute('data-tab_ids')): res; }, []); console.log('Selected tab lists:', JSON.stringify(selected)); // Return an array view of a set of all selected tab IDs. let tabIds = [...new Set(selected.reduce((r, t) => r.concat(JSON.parse(t)), []))].sort(); console.log('Selected tab ids:', JSON.stringify(tabIds)); });
 <select name="users[]" id="users" class="form-control " multiple="multiple"> <option data-tab_ids="[1,2,3,4,5,6,7,8]" value="0">Admin</option> <option data-tab_ids="[9]" value="1">samjad</option> <option data-tab_ids="[2]" value="2">Mohamed Omar</option> </select>

Maybe that's it?也许就是这样?

 $("#users").on('change', function(){ array = $(this).find('option:selected').attr('data-tab_ids'); console.log(array); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <select name="users[]" id="users" class="form-control " multiple="multiple"> <option data-tab_ids="[1,2,3,4,5,6,7,8]" value="0">Admin</option> <option data-tab_ids="[9]" value="1">samjad</option> <option data-tab_ids="[2]" value="2">Mohamed Omar</option> </select>

It's my solve:这是我的解决方案:

 const display = document.querySelector(".display"); const selectInput = document.querySelector(".form-control"); const setValue = () => { display.textContent =selectInput[selectInput.value].textContent + " " + selectInput[selectInput.value].getAttribute("data-tab_ids") } selectInput.addEventListener("click", setValue, false);
 <select name="users[]" id="users" class="form-control" multiple="multiple"> <option data-tab_ids="[1,2,3,4,5,6,7,8]" value="0">Admin</option> <option data-tab_ids="[9]" value="1">samjad</option> <option data-tab_ids="[2]" value="2">Mohamed Omar</option> </select> <div class="display"> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM