Javascript 防止默认滚动到元素进行输入
我可以防止默认的滚动顶部输入时,它的重点和不可见? 简单的例子:Javascript 防止默认滚动到元素进行输入,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我可以防止默认的滚动顶部输入时,它的重点和不可见? 简单的例子: <input type="search"> <div style="height: 2000px"></div> 要了解我的意思,请访问并: 单击输入使其集中 向下滚动至页面末尾(输入现在不可见) 开始打字吧 位置:固定将避免自动滚动输入,因为它不在可滚动区域 下面是一个快速编写的示例,基于并使用jQuery,抱歉 CSS .hiddenInput{position: fixed; opa
<input type="search">
<div style="height: 2000px"></div>
要了解我的意思,请访问并:
位置:固定代码>将避免自动滚动输入,因为它不在可滚动区域
下面是一个快速编写的示例,基于并使用jQuery,抱歉
CSS
.hiddenInput{position: fixed; opacity: 0;}
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;
jQuery
.hiddenInput{position: fixed; opacity: 0;}
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;
var inputop,inputBottom;
window.onload=函数()
{
inputTop=$('#input').offset().top
inputBottom=inputOP+$('#input').height();
}
函数为CrolledinToView(el)
{
var docViewTop=$(window.scrollTop();
var docViewBottom=docViewTop+$(window).height();
返回((inputBottom=docViewTop));
}
函数hideInput()
{
var el=$('输入');
如果(isScrolledIntoView(el)){
el.removeClass();
}否则{
el.addClass(“hiddenInput”);
el.css({top:inputTop});
}
}
window.onscroll=隐藏输入;
我也不能认为这是一个好的设计。但我们都必须按照自己的方式做事。如果有帮助,请尝试下面的脚本
$('input[type="search"]').on("keypress", function(event){
event.preventDefault();
return false;
});
这将使焦点保持在输入框上,浏览器也不会滚动到输入框。
如果您希望它跨浏览器运行,您可能还需要处理keydown事件。如果您在处理其他事件时遇到任何问题,请告诉我
但它会阻止您在任何输入中的任何时刻在输入中键入任何值:这样模糊就更容易了这可能是反模式的,但应该可以工作。此处的信息:
你为什么要阻止这种行为?人们应该猜他们在输入什么吗?并不是每个人都是400wpm的触摸打字员。这不完全是你所要求的,但你可以在文档
级别捕获输入,然后使用这些按键更改输入元素的值。我不知道你为什么要这么做,但它应该会起作用。我的网站上有更复杂的逻辑。首先,我只是想阻止它,做一些动作,并以编程方式调用focus on input。我想说这是不可能的,因为你正试图破坏所有浏览器的某些功能,也许操作系统默认会做些什么,也就是糟糕的UX ideaThanks。对所有人来说,我决定保持简单并使用blur。我知道这一点,但这不是我需要的。