Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止默认滚动到元素进行输入_Javascript_Jquery_Html_Css - Fatal编程技术网

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。我知道这一点,但这不是我需要的。