Javascript 如果到达时间x,我需要能够隐藏Magento签出中的place order按钮
我需要能够隐藏“下订单”按钮,如果最后期限是在结帐阶段达到。在这家商店里,顾客为他们的订单选择路线,然后从路线上取订单 当客户选择路线时,设置了截止时间的cookie,我需要在结账过程中实时将此cookie与当前时间进行比较,以确保客户无法向已关闭的路线下单Javascript 如果到达时间x,我需要能够隐藏Magento签出中的place order按钮,javascript,magento,checkout,Javascript,Magento,Checkout,我需要能够隐藏“下订单”按钮,如果最后期限是在结帐阶段达到。在这家商店里,顾客为他们的订单选择路线,然后从路线上取订单 当客户选择路线时,设置了截止时间的cookie,我需要在结账过程中实时将此cookie与当前时间进行比较,以确保客户无法向已关闭的路线下单 我有时间比较在PHP中工作,但它只获取页面加载的当前时间,因此如果有人在签出中花费太多时间,这可能是一个问题。我尝试过ajax脚本,并将它们放在button.phtml中,但由于某些原因,它们似乎不起作用。我确信这与magento的主题/文
我有时间比较在PHP中工作,但它只获取页面加载的当前时间,因此如果有人在签出中花费太多时间,这可能是一个问题。我尝试过ajax脚本,并将它们放在button.phtml中,但由于某些原因,它们似乎不起作用。我确信这与magento的主题/文件结构有关,但我没有得到。这是我目前的解决方案。这非常简单,但我现在的问题是,我无法弄清楚如何从服务器获取当前时间,因为javascript是客户端,它使用用户的时钟设置。做这件简单的事出人意料地困难。我想我很快就能弄明白 此代码驻留在button.phtml中
在客户端,您应该能够使用javascript实现这一点。到目前为止,它看起来非常简单。一旦实现完成,我将发布我的实现。
<script>
document.getElementById('deadline_reached').style.visibility = 'hidden';
function validateDeadline() {
<?php
date_default_timezone_set('Europe/Helsinki');
$deadlineTimeHuman=$_COOKIE["deadlineDate"];
$deadlineTimeUnixTimestamp = strtotime($deadlineTimeHuman);
?>
// Current date
var timeNowCompare = Math.round(new Date().getTime() / 1000) //Current date is changed to unix timestamp without milliseconds os it matches with php's timestamp format.
//Cookie's deadline time which has been changed to timestamp is loaded into variable.
var deadlineDate = "<?php echo $deadlineTimeUnixTimestamp ?>";
if (timeNowCompare < deadlineDate) // What happens when we are in schedule.
{
alert("Now < Deadline Order can be placed \n"+"n:"+ timeNowCompare +"\nd:"+deadlineDate); // This is for debugging
}
else if (timeNowCompare > deadlineDate) // What happens when current time is higher than deadline.
{
alert("Now > Deadline Order cant be placed \n"+"n:"+ timeNowCompare +"\nd:"+deadlineDate); // This is for debugging
document.getElementById('place_order_btn').style.visibility = 'hidden';
document.getElementById('deadline_reached').style.visibility = 'visible';
}
}
window.setInterval(function(){
validateDeadline();
}, 10000);
</script>