如何通过单击按钮滚动到所选选项?

Kar*_*hik 5 html javascript css jquery

当我单击焦点按钮时,我希望选择框自动滚动,然后显示所选选项。我无法使用焦点来实现它。有没有任何 javascript 或 jQuery 方法可以帮助我解决这个问题?

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script src="Scripts/jquery-2.1.4.js"></script>
        <script>
            $(document).ready(function () {
                $("#focus").click(function () {
                    $("select#selectId").find(":selected").focus();
                });
            });
        </script>
    </head>
    <body>
        <select title="Title" id="selectId" style="width: 143px; height: 125px; overflow: scroll;" multiple="multiple">
        <option  value="1">1 </option>
        <option  value="2">2 </option>
        <option  value="3">3</option>
        <option  value="4">4</option>
        <option  value="5">5</option>
        <option  value="6">6</option>
        <option  value="7">7</option>
        <option  value="8">8</option>
        <option  value="9">9</option>
        <option  value="10">10</option>
        <option  value="11">11</option>
        <option  value="12">12</option>
        <option  value="13">13</option>
        <option  value="14">14</option>
        <option  value="15">15</option>
        <option  value="16">16</option>
        <option  value="17">17</option>
        <option  value="18">18</option>
        <option  value="19">19</option>
        <option  value="20">20</option>
        <option  value="21">21</option>
        <option  value="22">22</option>
        <option  value="23">23</option>
        <option  value="24">24</option>
        <option  value="25">25</option>
        <option  value="26">26</option>
        <option  value="27">27</option>
        <option  value="28">28</option>
        <option  value="31">31</option></select>
        <button type="button" id="focus">focus on selected</button>
    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

A. *_*lff 5

您可以使用scrollIntoView()DOM 方法:

$(document).ready(function () {
    $("#focus").click(function () {
        $("#selectId").focus().find(":selected")[0].scrollIntoView();
    });
});
Run Code Online (Sandbox Code Playgroud)

编辑:不适用于 IE11(其他 vs???)


Kar*_*hik 2

我写了一个简单的脚本。这是一个更好的答案,因为就我而言,选择的内容动态变化,因此滚动高度不是恒定的。小提琴链接: https: //jsfiddle.net/962vxk4f/

$(document).ready(function () {
   $("#focus").click(function (e) {
      $selectId = $("#selectId");
      var $index = $selectId.find(":selected").index();
      var lastPos = 0;
      $selectId.children().each(function () { lastPos++; });
      var currScrollPos = ($index / lastPos) * parseInt($selectId[0].scrollHeight);
      $selectId.scrollTop(currScrollPos);
   });
});
Run Code Online (Sandbox Code Playgroud)