Итак, вот моя ситуация: у меня есть форма, которая проверяется с помощью 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 повсюду ....