在我的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();
},