PDA

View Full Version : Options on page exit(only for the brave!! not because it's hard it's just a bit long)


HappyTomato
11-27-2002, 04:24 AM
Hi all:
We have this problem that we cannot solve, if anybody can help it'll be great...:rolleyes:

We have a window with a text box with some default value inside and a submit button, when the user alters the default text in anyway and then clicks the submit button, the title field in the window will indicate there's a change and he/she will be prompt with another pop-up window(note: NOT window.prompt or wondow.confirm kind) asking if user wants to keep what is typed in the text box, uswer has a choice of "yes", "no" and "cancel", however if the user leave the text box untouched and press submit button, no window will pop up to ask the user.

Here's what's "supposed" to happen in each case:

case "yes" : pop up window will close and user will be left with the same page and things in input box will also be left as user has changed it, after this happens, if the user click submit again without changing the text box, nothing will come up as the new text has become the default text.

case "no": pop up window will close and user will be left with the original values in the text box BEFORE user alters it the first time.

case "cancel": pop up window will close and user will be left with input box same as the "yes" case but should the user press the submit button again the pop-up window will still show up(as only cancel is clicked).

Now... i know i've bored you enough.... here's the problem....

we had codings for two different windows, one for the pop-up window and one for the 'parent' window that calls it, we managed to link them in a way that the "yes" case works alright... but then we're stuck in the "no" case... here's our code....

<html>
<head>
<script type="text/javascript">
changed = false;
function show()
{
parent.document.title="Warning: The content in this page has been altered."
changed = true;
}
//***taken out the openwindow() and closewindow() functions to save space on here...
function promptUser(value)
{
if(value == 't')
{
if (changed)
openwindow();
}
if(value == 'y')
closewindow();
if(value == 'n')
//**stuck on this part.....****************
{
closewindow();
opener.document.my.reset();
}
//**********************************
if(value == 'c')
// closewindow(); //****stuck afterwards
}
</script>
</head>
<body>
<form name="my" action="Project6(test).php" method="POST">
Submit Box: <br>
<?php
if ($userinput == "")
echo('<input name="userinput" onkeyup="show()" size="45" value="Quick fox" >');
else
echo('<input name="userinput" onkeyup="show()" size="45" value="'.$userinput.'" >');
?>
<br><br>
<INPUT TYPE="submit" NAME="submitButton" VALUE="Submit" onClick= "promptUser('t')">
</form>
</body>
</html>



if somebody can tell us what part is wrong it'll be VERY GREAT!!! we've been stuck on this for so long.. we're newbies....it could be because there's something REALLY WRONG we've done since the beginning that we couldn't see....

Bo&Vic:thumbsup:

Algorithm
11-27-2002, 07:00 AM
Could you post the code in the closewindow() function please? It seems to me that that could be the problem area.

HappyTomato
11-27-2002, 08:10 PM
oh alright, here's the code.....

function openwindow()
{
answer = window.open('prompt.html','myExample4','width=180,height=140')
}

function closewindow()
{
window.open('prompt.html','myExample4','width=180,height=140').close()
}


it works fine to open and close window for the code we have so far tho... don't know what's wrong...


Bo&Vic:confused:

Algorithm
11-27-2002, 09:18 PM
Well, although it seems a bit too much effort to reassign the window just to close it, that shouldn't really be a problem. However, this confirms my guess that the code you're posting is employed by the parent window, so you shouldn't be referring to opener.

Try replacing opener.document.my.reset() with document.my.reset() and see what happens.

glenngv
11-28-2002, 08:36 AM
which is the code for the parent and the popup (prompt.html)? I think you mixed them in your post? I can't see the Yes/No/Cancel buttons...

HappyTomato
11-28-2002, 08:28 PM
i didn't put the code for prompt.html... but here it is:

<html>
<head>
</head>

<body bgColor=#CCCCCC>
<H3>Do you want to save changes?</H3>
<input type="button" name="save" value="Yes" onclick="window.top.opener.promptUser('y')">
<input type="button" name="not_save" value="No" onclick="window.top.opener.promptUser('n')">
<input type="button" name="cancel" value="Cancel" onclick="window.top.opener.promptUser('c')">
</body>
</html>

it does go pass the values back to parent window and run the functions tho... so i don't know if this html code is where the problem is..... :(


Bo & Vic

glenngv
11-29-2002, 01:21 AM
try this. I haven't tested this but should put you on the right track:

on the parent page:

<html>
<head>
<script type="text/javascript">
var changed = false;
var winPrompt;
var answer = 3; //1=yes,2=n0,3=cancel
function show()
{
parent.document.title="Warning: The content in this page has been altered."
changed = true;
}
function promptUser(f)
{
if (answer==3 && changed){
winPrompt = window.open('prompt.html','myExample4','width=180,height=140');
return false;//cancel submit
}
if (answer==1) return true;//continue submit
else if (answer==2){
f.reset();
return true;
}
return true;
}

function closePrompt(){
if (winPrompt && !winPrompt.closed) winPrompt.close();
}
</script>
</head>
<body onunload="closePrompt()">
<form name="my" action="Project6(test).php" method="POST" onsubmit="return promptUser(this)">
Submit Box: <br>
<?php
if ($userinput == "")
echo('<input name="userinput" onchange="show()" size="45" value="Quick fox" >');
else
echo('<input name="userinput" onchange="show()" size="45" value="'.$userinput.'" >');
?>
<br><br>
<INPUT TYPE="submit" NAME="submitButton" VALUE="Submit">
</form>
</body>
</html>


on the popup page: (prompt.html)

<html>
<head>
<script type="text/javascript">
function setAnswer(ans){
if (window.opener && !window.opener.closed){
window.opener.answer = ans;
}
window.close();
}
</script>
</head>
<body bgColor=#CCCCCC>
<form>
<H3>Do you want to save changes?</H3>
<input type="button" name="save" value="Yes" onclick="setAnswer(1)">
<input type="button" name="not_save" value="No" onclick="setAnswer(2)">
<input type="button" name="cancel" value="Cancel" onclick="setAnswer(3)">
</form>
</body>
</html>

HappyTomato
12-02-2002, 08:28 PM
Thanks glenngv!! :o

Your code works fine, only minor changes is needed in order for the code to do exactly what we want but i think we can cope with that ourselves :rolleyes: . Thanks again! :thumbsup:

Bo & Vic :cool:

whammy
12-03-2002, 01:34 AM
I sure like a HappyTomato better than a Killer Tomato. That movie "Attack of the Killer Tomatoes" gave me nightmares for years... ;)