一页签出滚动到下一页的屏幕底部


One Page Checkout scrolling to the bottom of screen on next

在我的magento网站上,我在onepagecheckout中遇到了一个奇怪的行为,我想修复它。基本上,在第2步中,输入所有需要的数据并单击继续按钮后,页面会自动向下滚动到屏幕底部,因此您不会看到发货选项,而是看到页脚,必须向上滚动才能选择发货。因此,我的问题是,我如何保持一页签出中的表单"集中",以便在单击"继续/下一步"按钮时屏幕保持不变。我尝试将onclick事件上的shipping.save()函数更改为类似于的函数

function test() {
           shipping.save();
           document.getElementById('checkoutSteps').scrollIntoView();
}

但这显然没有奏效。那么,当单击next时,我如何将页面设置为保持在onepagecheckout?

很抱歉,我忘记添加了,该按钮已存在一个单击事件。基本上,按钮看起来是这样的:

<button type="button" class="button" title="<?php echo $this->__('Continue') ?>" onclick="shipping.save()"><span><span><?php echo $this->__('Continue') ?></span></span></button>

我不确定这是否重要,但每当我尝试添加第二个函数onclick(onclick="shipping.save();testFunction();")时,第二个功能就会自动删除。

我遇到了同样的问题。在您的结账/onepage.phtml中,添加以下代码:

checkout.gotoSection = function (section, reloadProgressBlock) {
            Checkout.prototype.gotoSection.call(this, section, reloadProgressBlock);
            $('opc-' + section).scrollTo();
        };

低于

var checkout = new Checkout(....);

希望得到帮助。

$("#button").click(function() {
    $('html, body').animate({
        scrollTop: $("#elementtoScrollToID").offset().top
    }, 2000);
});

除了Williams回答:

大多数自定义模板都不会"重写"base/default/template/checkout/onepage.phtml,因此将此文件复制到模板中只是为了添加此文件会产生一些开销。。。

你仍然可以使用这个添加一个新的模板文件:

对于您的模板布局local.xml,请添加以下内容:

<checkout_onepage_index>
    <reference name="before_body_end">
        <block type="core/template" name="checkout.scroll" as="checkout.scroll">
            <action method="setTemplate">
                <template>checkout/onepage/scroll.phtml</template>
            </action>
        </block>
    </reference>
</checkout_onepage_index>

创建包含以下内容的.../template/checkout/onepage/scroll.phtml

<script type="text/javascript">
//<![CDATA[
    document.observe("dom:loaded", function() {
        if (typeof checkout !== 'undefined') {
            checkout.gotoSection = function (section, reloadProgressBlock) {
                Checkout.prototype.gotoSection.call(this, section, reloadProgressBlock);
                $('opc-' + section).scrollTo();
            };
        }
    });
//]]>
</script>

同样的结果,只是没有编辑基本模板文件

这也有帮助,我只需在checkout.gotoSection中添加这段代码,它就可以很好地工作了。

 gotoSection: function (section) {
    section = $('#opc-' + section);
    section.addClass('allow');
    // added this line
    section.get(0).scrollIntoView();
},