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