capturing messagebox OK/cancel event

G

Guest

Hi,

I have a messagebox that pops up due to an event. I did it in javascript.
ie. alert("Time's up. Assessment Ended");

I want to capture the OK and Cancel events of this alert messagebox. My code
is in C#/ASP.NET.

TIA.
Andrew.
 
E

Eliyahu Goldin

Andrew,

You need to pass the message box return value to the server side in the
value property of a hidden input control:

<input type=hidden id=inhTimeUp runat=server>

Eliyahu
 
S

Steve C. Orr [MVP, MCSD]

Here's some server side code that uses javascript to display a confirmation
message.

myDeleteButton.Attributes.Add("onclick", _
"return confirm('Are you sure you want to delete?');")

In this example, the Delete button will post back only if the person
confirms they want to delete. Otherwise the server code is never called in
response to the button click.

Here's more info:
http://SteveOrr.net/articles/ClientSideSuite.aspx
 
G

Guest

I seem to have a problem capturing the id="inhTimeUp" of the hidden input
control.

As I understand it, I put the code:
<input type=hidden id=inhTimeUp runat=server>
onto the parent file's html page, then I want to access this "inhTimeUp"
from the iFrame (child) page, is that possible ? coz the parent aspx page
just displays the top part of my page, while the child displays the bottom
and majority of the code in C#.

Am I making sense ?
TIA.
Andrew.
 
E

Eliyahu Goldin

Andrew,

What's the reason for putting the control on the parent form? Which form
produces the messagebox and which form is interested in the value clicked?

Eliyahu
 
G

Guest

I am writing an online assessment. The duration of the test 90 minutes.

Originally I had put everything on one page, but I discovered that whenever
the user clicks on NEXT question, the countdown re-starts. Obviously I don't
want that to happen.

I had to put the countdown (in javascript) textfield on the parent page, and
the question is displayed in the child page (iframe). The child form wants to
capture when the user clicks on the OK button of the:
alert("Time's up. Assessment Ended");

I hope this explains what I am trying to do. Is my design correct ?
TIA
Andrew.
 
E

Eliyahu Goldin

This is fine, but why can't you put the control in the child form? Anyway,
whatever your reason is, you can always access the control in the parent
page as

parent.document.getElementById("inhTimeUp");

and submit the parent form as

parent.myForm.submit();

Eliyahu
 
G

Guest

sorry, I do not really understand what you are saying. It's probably because
my javascript isn't great. Let me explain further.

I have IStartAss.aspx (parent) and StartAss.aspx (child iframe) to be
displayed.
On the parent page, there is the javascript code, and the hidden input text.

PARENT: The javascript looks like this (not sure if I am right):

<input type="hidden" id="inhTimeUp" runat="server" NAME="inhTimeUp">

<iframe id="Child_StartAss" src="StartAss.aspx" frameBorder="0"
runat="server"></iframe>

<SCRIPT language="Javascript">
....
alert("Time's up. Assessment Ended")
parent.document.getElementById("inhTimeUp") = true;
document.Form_IStartAss.submit();
</SCRIPT>

CHILD: There is some C# code.
I want to capture the event when the user clicks on the OK button and
proceed on.
How do I do this capturing ?

The reason why I am fussing about this capture is because later on I will
probably need to know how to do this in another part of the application
anyway.

TIA.
Andrew.
 
E

Eliyahu Goldin

Ok, I hope now I understand it better.

Your javascript is in the parent. the parent takes care of counting down the
assessment time. When the time is up, the parent want to notify the form in
the iframe. Is that correct?

If that is, the parent itself is not interested in the inhTimeUp value, it
just needs to pass this value to the form in the iframe and get that form to
sibmit with passing the value to the server-side c# code.

To make it happen, you need to move the inhTimeUp to the child, since the
the value should go to the child form server-side code. The message box is
produced on the parent and the parent will pass the value to the child as

document.getElementById("Child_StartAss").contentWindow.document.getElementB
yId("inhTimeUp").value=true;

and submit the child as

document.getElementById("Child_StartAss").contentWindow.myChildForm.submit()
;

where myChildForm is the id of the form in the iframe.

Eliyahu
 
G

Guest

Hi,

I need to clarify some stuff.

1) What does "Child_StartAss" signify ?
2) Also what code should i put in the child c# page to capture the
value=true send by the parent page ? Do i need to
"ClientScriptBlockRegistered" it ?

TIA.
Andrew
 
E

Eliyahu Goldin

See inline.

Eliyahu

Andrew said:
Hi,

I need to clarify some stuff.

1) What does "Child_StartAss" signify ?
That is the frame id from your code:
<iframe id="Child_StartAss" src="StartAss.aspx" frameBorder="0"
runat="server"> said:
2) Also what code should i put in the child c# page to capture the
value=true send by the parent page ? Do i need to
"ClientScriptBlockRegistered" it ?
No. When you add a line
<input type="hidden" id="inhTimeUp" runat="server"> (note than you can
safely remove the NAME attribute inserted by the VS)
the VS designer will place a line
protected System.Web.UI.HtmlControls.HtmlInputHidden inhTimeUp;

inside you .cs file. In the .cs file you can just check

if (inhTimeUp.Value == "true")

Note, that you have to switch to VS design view from the HTML view for the
line to appear in the .cs file.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top