Javascript jquery步骤:如何防止页面滚动到顶部?

Javascript jquery步骤:如何防止页面滚动到顶部?,javascript,jquery,dom,jquery-steps,Javascript,Jquery,Dom,Jquery Steps,我正在测试jquery steps插件,如果我单击下一步或上一步按钮(在底部)和窗口顶部在steps的div顶部下方(即,如果我的浏览器窗口高度太短,则会发生这种情况),卷轴会跳到主体顶部 显然没有办法阻止这一切,我尝试了一切,包括编辑插件代码。我唯一能做的就是通过向onStepChanging事件添加一些代码来设置不同的滚动位置: $("#steps-container").steps({ /* ... */ onStepChanging: function(e

我正在测试jquery steps插件,如果我单击下一步或上一步按钮(在底部)窗口顶部在steps的div顶部下方(即,如果我的浏览器窗口高度太短,则会发生这种情况),卷轴会跳到主体顶部

显然没有办法阻止这一切,我尝试了一切,包括编辑插件代码。我唯一能做的就是通过向
onStepChanging
事件添加一些代码来设置不同的滚动位置:

$("#steps-container").steps({
        /* ... */
        onStepChanging: function(event, currentIndex, priorIndex)
        {
            var top = 300;
            var pos = $(window).scrollTop();
            if (pos > top + 48)
            {
                $('body').scrollTop(top);
            }
            return true;
        },
        labels:
        {
            /* ... */
        },
        onFinishing: function (event, currentIndex) { submitOrderForm(); return true; }
    });

有人能帮我整理一下吗?谢谢

幸运的是,我想我找到了解决办法

不幸的是,它涉及到制作自己的插件编辑版本,因为开发人员没有为此提供选项,也没有公开此函数以进行覆盖

在函数
refreshStepNavigation
中,注释掉或删除以下代码(位于:


我看不出与修改滚动位置或在源代码中查找元素的顶部偏移量有任何关系,因此twigged它可能试图聚焦某个元素,从而导致浏览器跳转到它。在快速JSFIDLE中尝试了这一点,它似乎起了作用…

因此,当您遇到此问题时,您也会使用类似jQuer的验证如果要验证插件,在某些情况下必须注释掉或删除不同的行

在我的例子中,如果表单验证失败,步骤将保持不变,浏览器视图将弹出到顶部。请注释掉或删除第1273行以删除此行为(请参阅):


我在小型版本(v1.1.0)中遇到了同样的验证问题,我认为这可能会对某些人有所帮助

只需找到以下代码:

returng==f.currentIndex?(j(d,g).focus(),!1):void 0
换成这个

返回g==f.currentIndex?(true,!1):无效0

奇怪。我建议调用jQuery的event.preventDefault()在click事件处理程序上,但是。您是否看到文本
#next
#previous
在发生这种情况时出现在URL栏中?不,我在浏览器的状态栏中看到它,同时悬停在按钮上,但在单击后不在URL栏中。在您单击之前或之后浏览器的JS控制台中有任何错误吗?没有错误…我一直在砰砰地一声在问之前,请相信我:-)哥们,我在这上面呆了两天。页面上有没有其他可能会干扰的插件?试着把它们拿出来看看能不能修好。你是怎么发现的?我欠你一杯啤酒。哈哈,别担心,这个想法突然出现在我的脑海里!如果我在意大利,我可能会带你去喝啤酒……;)
currentOrNewStepAnchor.focus();
getStepAnchor(wizard, oldIndex).focus();