помочь с диалогом подтверждения JavaScript - PullRequest
0 голосов
/ 17 апреля 2011

Итак, вот моя ситуация: у меня есть форма, которая проверяется с помощью PHP.Я хочу сделать так, чтобы, если форма не прошла проверку, пользователь вынужден щелкнуть по диалоговому окну подтверждения, прежде чем перейти на другую страницу (форма довольно большая, и они не хотят случайно покидать ее, прежде чем она будет сохранена).Я собираюсь примерно так:

см. Обновленную функцию ниже ,

В основном используйте php внутри функции, чтобы либо установить тело для представления подтверждения, либо ничего не делатьв зависимости от состояния ошибки моей формы.Ничего не происходит, когда форма не отправлена, и я нажимаю на ссылку, хорошо.Когда в форме отображаются ошибки, и я щелкаю ссылку, появляется диалоговое окно подтверждения, но при отмене оно снова появляется.Если я отменю его во второй раз, запрос страницы пройдет, даже если он не должен.Я не очень знаком с JavaScript, поэтому я не уверен, что происходит.Есть ли лучший способ, которым я должен идти об этом?

Редактировать: Я понял это , это была комбинация вещей.Первая была действительно глупой ошибкой с моей стороны: я вызывал onlick для обоих тегов И тегов для каждой ссылки в моем списке, поэтому ящик всплыл дважды.

второй фрагмент был то, что хотямоя функция уже возвращает bool, onclick требует явного объявления возврата.Я делал:

<a onclick="forceConfirm();" href="somepage.html">Blah</a>

Когда это должно было быть:

<a onclick="return forceConfirm();" href="somepage.html">Blah</a>

Затем просто отредактируйте PHP так, чтобы forceConfirm всегда возвращал true, когда форма не была отправлена, минуяподтверждение:

            function forceConfirm(){
            <?php
                if($form->errorStatus){
                    echo 'if(confirm("Are you sure you want to navigate away from this page? All unsaved changes will be lost.")){'."\n".
                        'return true;'."\n".'}'."\n".
                        'else{ return false;}';
                }
                else{ echo 'return true;';}
            ?>
        }

Теперь мне просто нужно выяснить, как использовать jQuery для применения этого ко всем ссылкам без необходимости помещать события onclick повсюду ....

1 Ответ

0 голосов
/ 17 апреля 2011

Вы можете использовать confirm() следующим образом:

if(confirm("Are you sure you want to proceed?")){
    document.location = 'confirmed redirect url...';
}
else{
    document.location = 'cancel redirect url...';
}

Затем вы поместите его в тот же блок PHP, что и в вашем примере, отобразив его при необходимости и скрыв его, если нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...