1

我使用以下(看似常见的)方法在 php 页面中保存提交时的滚动位置:

<script type="text/javascript">
<!-- script for scroll position on submit -->
    function saveScrollPositions(theForm) {
    if(theForm) {
    var scrolly = typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement.scrollTop;
    var scrollx = typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement.scrollLeft;
    theForm.scrollx.value = scrollx;
    theForm.scrolly.value = scrolly;
    }
    }
</script>   
</head>



<body>
    <form id="ReportForm<?php echo $userNumber; ?>" name="ReportForm" method="POST" action="<?php echo $editFormAction; ?>" onsubmit="return saveScrollPositions(this);">
      <input type="hidden" name="scrollx" id="scrollx" value="0" />
      <input type="hidden" name="scrolly" id="scrolly" value="0" />

      -- various form controls here --

    </form>


<?php
    $scrollx = 0;
    $scrolly = 0;
    if(!empty($_REQUEST['scrollx'])) {
    $scrollx = $_REQUEST['scrollx'];
    }
    if(!empty($_REQUEST['scrolly'])) {
    $scrolly = $_REQUEST['scrolly'];
    }
?>
<script type="text/javascript">
    window.scrollTo(<?php echo "$scrollx" ?>, <?php echo "$scrolly" ?>);
</script>
</body>

在正文中,表单由重复区域包装以从数据库中获取多个报告,但是在运行时加载的页面中的每个表单都需要一个唯一的 id,因此在表单标记中我有:

id="reportForm<?php echo $userNumber ?>"

这会导致 saveScrollPositions 失败。删除最后附加的 userNumber 是可行的。知道如何解决这个问题吗?

我非常感谢您对此提供的任何帮助,并感谢您的期待。

亲切的问候,约翰

4

0 回答 0