如何避免滚动到焦点元素

时间:2017-04-18 12:07:46

标签: javascript html5 focus

所以,我有一个输入类型=文本作为搜索。

搜索,自动滚动到长列表中找到的项目(因此输入在屏幕外),但是当我继续键入时,跳转到第一个找到的结果后,它会返回输入的位置。我想避免这种行为。

https://jsfiddle.net/ptjnr93q/

请参阅上面的jsfiddle。



<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<select class="" data-bind="options:formatArray(),optionsText:'text',value:formatArrayDefault"></select>
&#13;
var cont = 0;
var fill = "test";
for (cont = 0; cont < 1000; cont++) {
    $("body").append(fill + "<br>");
	console.log("e");
}

$("input").bind('focusin focus', function(e){
  e.preventDefault();
});
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

我提出了另一种实现目标的方法,即保持向下滚动的位置不变。

  • 将结果集保存在单独的DIV中。
  • 添加滚动到resultSet div,这样即使焦点移动到输入,您的被控位置也不会受到影响

    var cont = 0;
    var fill = "test";
    for (cont = 0; cont < 1000; cont++) {
        $("#resultSet").append(fill + cont + "<br>");
    	//console.log("e");
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" class="search">

    <br>
    
    <div id="resultSet" style="height:200px; overflow:scroll;"></div>