Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scroll down to selected option on button click using jquery

I have a list of countries like this:

screenshot

The list is very extensive. I need to be able on a button click to move (focus) to the specified country.

There are many threads in StackOverflow but none of them worked. For example I tried this:

var code = 40;
$('#id_resource-regions').val(code).scrollTop(160);

There is no response and no error/warnings in the developers tool. Note that the list is created using django forms and templates.

like image 739
user1919 Avatar asked May 05 '26 00:05

user1919


1 Answers

  • Select the option element you are looking for.
  • Get the offset top position using .offset(), of the selected option element.
  • Get the offset top of the select element.
  • Use .scrollTop() to scroll to the desired option.

Here is an example

var btn = $('button')
var select = $('select')

btn.on('click', function() {
  var option = select.find("option:contains('item-30')");
  var optionTop = option.offset().top
  var selectTop = select.offset().top;
  select.scrollTop(select.scrollTop() + (optionTop - selectTop));
  option.prop('selected', true)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select name="" id="select" multiple="multiple">
  <option value="">item-1</option>
  <option value="">item-2</option>
  <option value="">item-3</option>
  <option value="">item-4</option>
  <option value="">item-5</option>
  <option value="">item-6</option>
  <option value="">item-7</option>
  <option value="">item-8</option>
  <option value="">item-9</option>
  <option value="">item-10</option>
  <option value="">item-11</option>
  <option value="">item-12</option>
  <option value="">item-13</option>
  <option value="">item-14</option>
  <option value="">item-15</option>
  <option value="">item-16</option>
  <option value="">item-17</option>
  <option value="">item-18</option>
  <option value="">item-19</option>
  <option value="">item-20</option>
  <option value="">item-21</option>
  <option value="">item-22</option>
  <option value="">item-23</option>
  <option value="">item-24</option>
  <option value="">item-25</option>
  <option value="">item-26</option>
  <option value="">item-27</option>
  <option value="">item-28</option>
  <option value="">item-29</option>
  <option value="">item-30</option>
  <option value="">item-31</option>
  <option value="">item-32</option>
  <option value="">item-33</option>
  <option value="">item-34</option>
  <option value="">item-35</option>
  <option value="">item-36</option>
  <option value="">item-37</option>
  <option value="">item-38</option>
  <option value="">item-39</option>
  <option value="">item-40</option>
</select>

<button>move to item 30</button>
like image 164
DavidDomain Avatar answered May 07 '26 15:05

DavidDomain



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!