Лучше, если вы присваиваете идентификаторы или классы своим кнопкам и привязываете к ним события в своей функции jQuery ready или везде, где вы динамически создаете свои формы (если вы это делаете).
Предполагая, что вы присвоите следующий атрибут id кнопкам назад и home и удалите встроенный атрибут onclick, добавьте его в тег script:
$(function(){
$('#btnBack').click(function(){
if(!confirm("Leave page?")) return false;
history.back();
});
$('#btnFoo').click(function(event){
return confirm("Leave page?");
});
});
При нажатии кнопки «Назад» возвращается значение «ложь», только если пользователь отменил операцию. Если они нажали ok, вы действительно хотите выполнить history.back()
, чтобы вернуться на предыдущую страницу.
В ссылке foo вы должны вернуть false, чтобы избежать автоматического перехода по гиперссылке.
Также обратите внимание, что функция подтверждения является синхронной, в отличие от большинства пользовательских взаимодействий, которые вы выполняете в javascript через DOM. Это означает, что при появлении диалогового окна выполнение вашего кода приостанавливается до тех пор, пока пользователь не нажмет кнопку, и функция не оценит результат этого нажатия. Это на самом деле то, что вам нужно в этой ситуации.
Редактировать: Удалено preventDefault()
по предложению @ bazmegakapa.