我有一个创建报价单,订单等的应用程序,当用户添加页面重新加载的项目时,可能会很长。问题是用户必须向下滚动到最后一个项目以添加另一个项目 - 这将非常耗时。有没有办法让我自动完成这项工作?我已经尝试过将锚点放在每个这样的行项目上;
echo "<form action='display_quotation.php' method='post'>\n";
echo "<input type='hidden' name='quote_id' value='$quote_id'>\n";
echo "<input type='hidden' name='item' value='$detail_number'>\n";
echo "<a name='item_$detail_number'></a>\n";
并输入javascript;
echo "
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<style type='text/css'> table {font: 13px arial} </style>
<script type='text/javascript'>
function goToAnchor() {
window.location.hash='item_$item';
}
</script>
</head>
<body onload='goToAnchor();'>\n";
这似乎不起作用 - 我进入了网址http://my_domain/display_quotation.php?#item_3,但无论通过帖子传递什么项目,页面都会转到第2项。
答案 0 :(得分:1)
更改行
window.location.hash='item_$item';
到
window.location.hash='item_<?php echo $item; ?>';
答案 1 :(得分:0)
我的另一个简单想法是,您可以选择这样做,而不是页面加载和编写脚本来执行哈希:
<?php header("location : yourpagename.php#$item"); ?>
另一种解决方案是使用jQuery,向下滚动到页面底部。
一个很好的例子就是使用jQuery:http://djpate.com/2009/10/07/animated-scroll-to-anchorid-function-with-jquery/
答案 2 :(得分:0)
问题可能在于浏览器滚动到右侧锚点,但随后由于样式/图像等的重排而导致页面中锚点的位置发生偏移。经过一段时间的延迟后再次尝试再次使用相同的锚点。在load
事件处理程序中执行此操作:
setTimeout(function () {
with (document.location) hash && (hash = hash);
}, 1);
如果1ms没有削减它,可以使用较大的延迟。
答案 3 :(得分:0)
这是一个非常简单的解决方案
<?php
if($POST)
{
$iItemId = $POST['item_id'];
//after saving the item to cart redirect to
redirect('domain.com/#'.$iItemId);
}
?>
<a id="1">Product 1</a>
<a id="2">Product 2</a>
<a id="3">Product 3</a>