Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Отмена закрытия страницы пользователем (https://javascript.ru/forum/jquery/22726-otmena-zakrytiya-stranicy-polzovatelem.html)

rootv 31.10.2011 06:14

Отмена закрытия страницы пользователем
 
(В этом деле - новичек)
Кратко - зачем: на странице заполнена форма, но не сохранена... случайное нажатие ссылки - форма потеряна. Нужно предупреждение и подтверждение пользователя на уход со страницы...

Из найденного
Цитата:

<body onbeforeunload="return ('Все данные которые вы ввели будут потеряны')"></body>
и для jquery
Цитата:

<script>window.onbeforeunload = function () {return (is_data_changed ? "Измененные данные не сохранены. Закрыть страницу?" : null);}</script>
как-то работают, но только не в Опере(!)

Другой вариант, которым забит весь интернет (тоже для jquery) основан на
Цитата:

$("YourForm").FormNavigate("YourMessage");
- не работает... и выдает ошибку
Цитата:

$("YourForm").FormNavigate is not a function
В чем ошибка?

DjDiablo 31.10.2011 08:19

проблема в селекторе YourForm - такого селектора не бывает
зато может быть к примеру #YourForm
#-значит ищем элемент по id

<form id="YourForm">
</form>

<script>
        $("#YourForm").FormNavigate("message");
</script>

rootv 31.10.2011 10:52

Вроде так и делал
Цитата:

<script>$(document).ready(function(){ $("#kv").FormNavigate({ message: "Содержимое было изменено!\nВы уверены, что хотите покинуть страницу без сохранения?" }); });</script>

<form name="kv" id="kv" method="POST" action="">
<input type="text" name="1" value="1">
</form>

ksa 31.10.2011 11:07

rootv, вот посмотри такой вариант...
http://jquery-docs.ru/Events/unload/#fn

rootv 31.10.2011 12:15

Цитата:

Сообщение от ksa (Сообщение 133674)
rootv, вот посмотри такой вариант...
http://jquery-docs.ru/Events/unload/#fn

Это для меня не понятно, но что-то мне подсказывает, что это то же самое, что вставить обработчик с алертом для unload прямо в BODI.
- Сообщение-то выскакивать будет, но страница с формой исчезнет...

walik 31.10.2011 15:34

Цитата:

Сообщение от rootv
$("YourForm").FormNavigate is not a function
В чем ошибка?

Это означает что он не знает такую функцию как "FormNavigate". Возможно для этого требуется плагин.

rootv 31.10.2011 16:40

Цитата:

Возможно для этого требуется плагин.
Если можно - два слова про плагин - что это за зверь и где его искать?
То, что я накопал, это -
Цитата:

<script>$(document).ready(function(){ $("#kv").FormNavigate({ message: "Содержимое было изменено!\nВы уверены, что хотите покинуть страницу без сохранения?" }); });</script>
и говорится, что достаточно скачать и подключить jquery и все будет работать (действительно, другие примерчики - работают)

walik 31.10.2011 17:03

Отсюда качаете плагин и подключаете на страницу после Jquery

rootv 01.11.2011 00:32

Спасибо. А я думал плагин - это заплатка на браузер...

Подключал только jquery.
теперь загрузил и добавил
<script type="text/javascript" src="jquery.FormNavigate-min.js"></script>

1. Старой ошибки не выдает.
2. В Опере - никакой реакции
3. В IE и хроме - вместо сообщения выдает [object Object]
4. В FF спрашивает как положено о желании выйти, но никакого сообщения вообще ни выводит (правда и раньше не выводила)

Вот что работает 100% даже в Опере, так это -

<script>$(document).ready(function(){
$("a").click(function(){
alert("Побудьте еще!");
return false;
});
});
</script>

Но это только для переходов по ссылке...

Буду искать решение дальше...


Часовой пояс GMT +3, время: 04:33.