我可以阻止默认滚动顶部在它聚焦且不可见时输入吗? 简单的例子:
<input type="search">
<div style="height: 2000px"></div>
要了解我的意思,请转到http://jsfiddle.net/PV5tC/并:
答案 0 :(得分:1)
position : fixed;
将避免自动滚动输入,因为它不在可滚动区域中。
这是一个快速编写的示例,基于this answer,使用jQuery,抱歉......
CSS
.hiddenInput{position: fixed; opacity: 0;}
jQuery
var inputTop, inputBottom;
window.onload = function()
{
inputTop = $('#input').offset().top
inputBottom = inputTop + $('#input').height();
}
function isScrolledIntoView(el)
{
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
return ((inputBottom <= docViewBottom) && (inputTop >= docViewTop));
}
function hideInput()
{
var el = $('#input');
if ( isScrolledIntoView(el) ){
el.removeClass();
}else{
el.addClass('hiddenInput');
el.css({top: inputTop});
}
}
window.onscroll = hideInput;
<强> working fiddle 强>
答案 1 :(得分:0)
我也想不出这是好的设计。但我们都必须按照自己的方式做点什么。如果有帮助,请尝试以下脚本
$('input[type="search"]').on("keypress", function(event){
event.preventDefault();
return false;
});
这样可以保持对输入框的关注,浏览器也不会滚动到输入框。 如果您希望它跨浏览器,您可能还需要处理keydown事件。如果您在处理其他活动时遇到任何问题,请与我们联系。
但它会阻止你在任何输入中随时输入输入中的任何值:然后模糊更容易
答案 2 :(得分:0)
这可能是反模式,但这应该有效。信息在这里:Disable scrolling when changing focus form elements ipad web app
$('input[type="search"]').on("keydown", function(){
var oldScroll = $(window).scrollTop();
$(window).one('scroll', function() {
$(window).scrollTop(oldScroll);
});
// Your ACTION HERE
})