Почему AutoScroll перенаправляет на предыдущую страницу

У меня проблема с функцией, которую я только что создал. Я пытаюсь выполнить автоматическую прокрутку до определенного пользователя на столе. Когда я выбираю свою кнопку, она прокручивается до пользователя, но затем перезагружает предыдущую страницу.

Вы должны перейти на xxx.com, а затем выбрать меню, которое ведет к xxx.com/results_page.php. Здесь вы выберете другую ссылку, которая приведет вас на xxx.com/results.php. Здесь вы выберете кнопку Autoscroll. Кнопка перенесет вас в нужное место на странице, а затем перезагрузит на xxx.com/results_page.php.

Я скопировал этот скрипт у друга, поэтому не совсем понимаю, как он работает. Это моя кнопка, она у меня отключена, так как она сломалась.

<tr>
    <td colspan=2>
        <button onclick="findUser()" title="Sorry, I'm still working  on this." disabled>My Entry</button>
    </td>
</tr>

Это функция вверху страницы.

<script type="text/javascript">
function findUser(){
    $(window).scrollTop($("td:contains('<?php echo $_SESSION['loggedInUser']; ?>'):last").offset().top);
}
</script>

Дайте мне знать, что еще я могу дать, чтобы помочь здесь. Я могу настроить тестовую страницу, если это необходимо.

Страница тестирования Testing.daqspickem.com Логин: Гость Пароль: Гость

После входа перейдите на страницу testing.daqspickem.com/results.php. Кнопка находится на этой странице. Страница результатов Страницы результатов

В этом коде я устанавливаю TD, который хочу найти.

    switch ($user_names_display)
    {
            case 1:
                    echo '      <td>' . trim($tmpUser->firstname . ' ' . $tmpUser->lastname) . '</td>' . "\n";
                    break;
            case 2:
                    echo '  <td><img src="images/logos/' . trim($tmpUser->template_name) . '.gif" style="opacity: .8; width: 40px; height: 40px; margin-left: 0px; z-index: -1;" />' . trim($tmpUser->userName) . '</td>' . "\n";
                    break;
            default: //3
                    echo ' <td><img src="images/logos/' . trim($tmpUser->template_name) . '.svg" style="width="15px" height="15px" /><abbrev title="' . trim($tmpUser->userName) . '&#10;' . trim($tmpUser->firstname . ' ' . $tmpUser->lastname) . '">' . substr($tmpUser->userName, 0, 17) . '</abbrev>
</td>' . "\n";
                    break;
    }

person Daquiri    schedule 23.07.2016    source источник
comment
Эта тестовая страница определенно понадобится. Цель вашего сценария недостаточно ясна. Вы также можете настроить скрипт js. Спасибо   -  person vaibhavmande    schedule 23.07.2016
comment
Я сказал вам цель в описании. Я пытаюсь выполнить автоматическую прокрутку до определенного пользователя (td:contains('‹?php echo $_SESSION['loggedInUser']; ?›'):last) в таблице. Я хочу нажать на кнопку и прокрутить таблицу до этой записи.   -  person Daquiri    schedule 24.07.2016
comment
Отредактирован исходный пост с тестовой страницей.   -  person Daquiri    schedule 24.07.2016
comment
Я думаю, мне просто нужно выяснить, как предотвратить обновление страницы. Я попал в кроличью нору, но скрипт работает, кроме освежения.   -  person Daquiri    schedule 25.07.2016


Ответы (3)


Попробуй это:

function findUser(e){
    e.preventDefault();
    $(window).scrollTop($("td:contains('<?php echo $_SESSION['loggedInUser']; ?>'):last").offset().top);
}

Это работает, потому что не позволяет href выполнять функции по умолчанию.

person Toby    schedule 23.07.2016
comment
Та же проблема, хотя я, возможно, нашел проблему. Когда я посмотрел на свою таблицу, она показывает имя пользователя вместо первого: последнего, поэтому, возможно, он не находит запись. Не приведет ли это к перезагрузке? - person Daquiri; 24.07.2016

Я думаю, проблема в этом скрипте,

<script type="text/javascript">
function findUser(){
    $(window).scrollTop($("td:contains('<?php echo $_SESSION['loggedInUser']; ?>'):last").offset().top);
}
</script>

Здесь ваш $_SESSION['loggedInUser'] содержит "Guest", а td, на который вы ссылаетесь, имеет внутренний HTML "guest"

Это изменение исправит ситуацию, но вам нужно будет спроектировать откат для обработки таких ситуаций, когда пользователь отсутствует в таблице.

person vaibhavmande    schedule 24.07.2016
comment
Вы потеряли меня здесь, вы только что опубликовали тот же код, с которого я начал? Как это исправить? - person Daquiri; 25.07.2016

Я добавил форму вокруг своей кнопки, и, похоже, проблема устранена. Я был бы открыт для любых других идей, так как это не кажется идеальным. Кажется, Chrome - это проблема с обновлением.

      <form id="frmData" onsubmit="return false"> 
  <tr><td colspan = 2 > <button onclick="findUser()" title="Sorry, I'm still working  on this." >My Entry</button></td> </tr></table>
</form>

сценарий

    <script type="text/javascript"> 
function findUser()
{
$(window).scrollTop($("td:contains('<?php echo $_SESSION['loggedInUser']; ?>'):last").offset().top);

}
</script>
person Daquiri    schedule 24.07.2016