PDA

Просмотр полной версии : Вопросец о модальных диалоговых веб-окнах


undeddy
09.02.2006, 21:19
Cобственно, вопрос (и проблема) в следующем.
Если пользователь самопроизвольно выходит из модального окна, то возникает вопрос о переменной, которая является значением поля ввода в этом диалоговом модальном окне, возвращаемой этим модальным окном. Поясню. Есть кнопка в этом модальном окне, при нажатии на которую некой переменной передается значение поля ввода и происходит закрытие окна. Но если, как уже упоминалось выше, пользователь сам выйдет из этого модального окна, то все портится. В общем, можно ли осуществить как-либо такое действие, когда пользователь, ничего не введя в поле ввода, сам пытается покинуть страницу, но не может, то есть программа должна сообщить пользователя, что необходимо ввести что-либо в поле ввода, прежде чем пользователь сможет выйти из окна.

kost@
10.02.2006, 00:39
если прально понял, то на JS это будет выглядеть так:
<script>
a=null;
while(a==null) {a=prompt("hello");}
</script>
ну или с событием onUnload можно чего-нибудь помутить, если данные вводятся через текстовые поля... Что-нибудь типа:

<body onUnload=onExitWindow()>
<script>
// снова открываем то же окно, если пользователь не ввел данные
function onExitWindow() {
if (не_введены_данные) window.open(...)
}
</script>

Понятно, что пользователь при определенном уровне квалификации может обойти эти ограничения как два байта переслать... Если и это нужно обойти, то мочи через PHP/ASP/JSP - чего ты там знаешь?

KidsKilla
10.02.2006, 15:44
а если пользователь передумал и хочет ничего не вводить?

у тебя непродумано приложение вот и всё.

undeddy
10.02.2006, 17:35
А мне надо, чтобы он обязательно что-то ввел. Фишка в том, что если пользователь что-то ввел и нажал нга кнопку, то происходит передача введенной информации в главное окно и закрытие этого модального окна, есил же он ничего не ввел, то вызывавется alert(). Если же пользователь сам хочет покинуть страницу, то необходимо сделать так, чтобы он не смог выйти, ничего не введя. Можно, конечно, попытаца так. Если он сам выходит из модального окна, то значение переменной передается как null, например, а в главном окне чтонибудь замутить если значение переменной равно null. Но тогда придется вставить событие onunload, которое вызовется и при методе window.close() после нажатия на кнопке, поэтому и происходит ошибка в сенарии. Как это избежать?

KidsKilla
10.02.2006, 17:40
window.onunload = function(){
this.opener.variable = this.document.myform.myinput.value || null;
}
+
<form name="myform" onsubmit="window.close();"...

вот и всё...

undeddy
10.02.2006, 18:55
Так то оно так, но у меня другая задача. Если пользователь на жмет на кнопку, то вызовется та же функция что и при самопроизвольном выходе из окна, т есть проверится ввел ли пользователь что либо в поле вводла и если нет то вызовет сообщение. При этом если функция была вызвана при нажатии на кнопку то все нормально и после сообщения окно не закрывается, а если функция была вызвана при выходе из окна самим пользователем, то сообщение выводся с помощью alert(), но затем окно закрывается и возникает ошибка, связанная со значением переменной. Вот так вот.

KidsKilla
10.02.2006, 18:56
нихрена не понял. задашь конкретный вопрос -- отвечу.
а до тех пор хернёй вы маетесь, молчел.

undeddy
10.02.2006, 19:07
Прямой вопрос: можно ли сделать так, чтобы пользователь, пока ничего не ввдет в поле ввода, вообще не смог покинуть диалоговое окно?

KidsKilla
10.02.2006, 19:08
нет.
можно эмуляцию. -- если ничего не передалось, открыть окно заново.