JavaScript confirm

R

rn5a

I have gone through a no. of posts in this NewsGroup regarding my
problem but alas, couldn't come across one which would have helped me
in resolving the issue. My problem is this:

An ASPX Form has a Button. When the Button is clicked, I want a
JavaScript confirm dialog to pop-up with the options 'OK' & 'Cancel'. I
have done this using the following code:

Sub Page_Load(....)
btnClick.Attributes.Add("OnClick", "javascript:return confirm('Are
you sure you want to exit?');")
End Sub

where 'btnClick' is the name of the Button.

The problem is how do I find out which of the 2 buttons, 'OK' or
'Cancel', has a user clicked? Any one can help me out with this?

My primary intention is if the user clicks 'OK' in the confirm dialog,
then function1 should get executed but if the user clicks 'Cancel',
then function2 should get executed.

In JavaScript, if 'OK' is clicked, then confiorm returns 1; if 'Cancel'
is clicked, then confirm returns 0.
 
E

Eliyahu Goldin

Are you asking on the server side? Your code already does it. If Cancel is
clicked, the event won't propagate to the server.
 
R

rn5a

If Cancel is
But I want the event to propogate so that ASP.NET can invoke a
different sub-routine.

As already said, I want the confirm dialog to come up when a Button is
clicked. The code snippet I showed in post #1 does this. Now I want to
invoke a sub-routine when the user clicks 'OK' which can be easily done
using the OnClick event of the Button control using the following code
snippet (assume that this ASPX page is named 'Proceed.aspx')

<script runat="server">
Sub Page_Load(.....)
btnClick.Attributes.Add("OnClick", "javascript:return
confirm('Are you sure you wish to exit?');")
End Sub

Sub OKClicked(obj As Object, ea As EventArgs)
Response.Write("You clicked OK")
End Sub
</script>
<form runat="server">
<asp:Button ID="btnClick" OnClick="OKClicked" Text="PROCEED"
runat="server"/>
</form>

But if the user clicks 'Cancel' in the confirm dialog, I want ANOTHER
sub-routine named, say, 'CancelClicked' to be invoked. How do I invoke
the sub 'CancelClicked' when the user clicks 'Cancel' in the confirm
dialog? This is where I am getting stuck.

Actually prior to coming to this ASPX page named 'Proceed.aspx' that
has the above Button control, a few records entered by a user in
different Form fields get inserted in a temporary SQL Server 2005 DB
table. A user clicks this Button control; the JavaScript confirm dialog
with 'OK' & 'Cancel' buttons pops-up. If the user clicks 'OK', records
in the temporary table will be transferred to another DB table after
which, the records in the temporary table will get deleted. However, if
the user clicks 'Cancel' in the confirm dialog, then WITHOUT
transferring the records from the temporary table to the other DB
table, the records in the temporary table should get deleted.

That's precisely the reason why I want to execute a sub-routine even
when 'Cancel' in the confirm dialog is clicked.


Eliyahu said:
Are you asking on the server side? Your code already does it. If Cancel is
clicked, the event won't propagate to the server.

--
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]


I have gone through a no. of posts in this NewsGroup regarding my
problem but alas, couldn't come across one which would have helped me
in resolving the issue. My problem is this:

An ASPX Form has a Button. When the Button is clicked, I want a
JavaScript confirm dialog to pop-up with the options 'OK' & 'Cancel'. I
have done this using the following code:

Sub Page_Load(....)
btnClick.Attributes.Add("OnClick", "javascript:return confirm('Are
you sure you want to exit?');")
End Sub

where 'btnClick' is the name of the Button.

The problem is how do I find out which of the 2 buttons, 'OK' or
'Cancel', has a user clicked? Any one can help me out with this?

My primary intention is if the user clicks 'OK' in the confirm dialog,
then function1 should get executed but if the user clicks 'Cancel',
then function2 should get executed.

In JavaScript, if 'OK' is clicked, then confiorm returns 1; if 'Cancel'
is clicked, then confirm returns 0.
 
E

Eliyahu Goldin

If you don't return "false", the event will arrive to the server. Now you
need to pass the user's choice in a hidden input control:

btnClick.Attributes.Add("OnClick",
"javascript:myForm.inhConfirmResponse.value = confirm('Are you sure you wish
to exit?') ? 'true' : 'false'");

and in the aspx page:

<input type="hidden" id="inhConfirmResponse" runat="server" />

--
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]


But I want the event to propogate so that ASP.NET can invoke a
different sub-routine.

As already said, I want the confirm dialog to come up when a Button is
clicked. The code snippet I showed in post #1 does this. Now I want to
invoke a sub-routine when the user clicks 'OK' which can be easily done
using the OnClick event of the Button control using the following code
snippet (assume that this ASPX page is named 'Proceed.aspx')

<script runat="server">
Sub Page_Load(.....)
btnClick.Attributes.Add("OnClick", "javascript:return
confirm('Are you sure you wish to exit?');")
End Sub

Sub OKClicked(obj As Object, ea As EventArgs)
Response.Write("You clicked OK")
End Sub
</script>
<form runat="server">
<asp:Button ID="btnClick" OnClick="OKClicked" Text="PROCEED"
runat="server"/>
</form>

But if the user clicks 'Cancel' in the confirm dialog, I want ANOTHER
sub-routine named, say, 'CancelClicked' to be invoked. How do I invoke
the sub 'CancelClicked' when the user clicks 'Cancel' in the confirm
dialog? This is where I am getting stuck.

Actually prior to coming to this ASPX page named 'Proceed.aspx' that
has the above Button control, a few records entered by a user in
different Form fields get inserted in a temporary SQL Server 2005 DB
table. A user clicks this Button control; the JavaScript confirm dialog
with 'OK' & 'Cancel' buttons pops-up. If the user clicks 'OK', records
in the temporary table will be transferred to another DB table after
which, the records in the temporary table will get deleted. However, if
the user clicks 'Cancel' in the confirm dialog, then WITHOUT
transferring the records from the temporary table to the other DB
table, the records in the temporary table should get deleted.

That's precisely the reason why I want to execute a sub-routine even
when 'Cancel' in the confirm dialog is clicked.


Eliyahu said:
Are you asking on the server side? Your code already does it. If Cancel
is
clicked, the event won't propagate to the server.

--
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]


I have gone through a no. of posts in this NewsGroup regarding my
problem but alas, couldn't come across one which would have helped me
in resolving the issue. My problem is this:

An ASPX Form has a Button. When the Button is clicked, I want a
JavaScript confirm dialog to pop-up with the options 'OK' & 'Cancel'. I
have done this using the following code:

Sub Page_Load(....)
btnClick.Attributes.Add("OnClick", "javascript:return confirm('Are
you sure you want to exit?');")
End Sub

where 'btnClick' is the name of the Button.

The problem is how do I find out which of the 2 buttons, 'OK' or
'Cancel', has a user clicked? Any one can help me out with this?

My primary intention is if the user clicks 'OK' in the confirm dialog,
then function1 should get executed but if the user clicks 'Cancel',
then function2 should get executed.

In JavaScript, if 'OK' is clicked, then confiorm returns 1; if 'Cancel'
is clicked, then confirm returns 0.
 
R

rn5a

That's exactly what I was looking out for. However, I created a custom
control to do the same but this also gives the user the option to
customize the confirm message text dynamically in the confirm dialog.
This is the VB class file (Confirm.vb):

Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace Confirm
Public Class ShowConfirm : Inherits Control
Private strConfirmMsg As String
Public txtGetAnswer As TextBox

Public Property ConfirmMessage() As String
Get
ConfirmMessage = strConfirmMsg
End Get
Set(ByVal value As String)
strConfirmMsg = value
End Set
End Property

Protected Overrides Sub Render(ByVal Output As HtmlTextWriter)
Output.Write("<script language='JavaScript'>")
Output.Write(vbCrLf)
Output.Write("var answer = confirm('")
Output.Write(strConfirmMsg)
Output.Write("')")
Output.Write(vbCrLf)
Output.Write("document.frmCC.txtGetAnswer.value = answer")
Output.Write(vbCrLf)
Output.Write("</script>")
End Sub
End Class
End Namespace

Using vbc, I compiled the above class into a DLL named 'ConfirmCC.dll'.
The ASPX page which uses this custom control has 2 TextBox controls & a
Button control. In the first TextBox, user enters the question he wants
to ask & depending upon whether the user clicks 'OK' or 'Cancel' in the
confirm dialog (which comes up when the Button is clicked), the second
TextBox displays true or false respectively.

<%@ Register TagPrefix="CC" Namespace="Confirm" Assembly="ConfirmCC" %>

<script runat="server">
Sub ConfirmSub(ByVal obj As Object, ByVal ea As EventArgs)
ccConfirm.ConfirmMessage = txtMsg.Text
End Sub
</script>
<form id="frmCC" runat="server">
<asp:TextBox ID="txtMsg" runat="server"/>
<asp:TextBox ID="txtGetAnswer" runat="server"/>
<asp:Button ID="btnConfirm" OnClick="ConfirmSub" Text="CONFIRM"
runat="server"/>
<CC:ShowConfirm ID="ccConfirm" runat="server"/>
</form>

If the user enters the text 'Do you want to proceed ahead?' in the
first TextBox & clicks the Button, the confirm dialog asks the question
'Do you want to proceed ahead?' or if the user enters the text 'Wanna
Quit?' in the first TextBox & clicks the Button, the confirm dialog
asks the question 'Wanna Quit?'. The second TextBox displays true or
false when 'OK' or 'Cancel' is clicked in the confirm dialog
respectively.

Please give your frank & honest opinion on this. To be very honest,
this is the first time I have created a custom control in ASP.NET &
hence would like to get some feedback from others - be it positive or
negative!

All are welcome to comment.

Eliyahu said:
If you don't return "false", the event will arrive to the server. Now you
need to pass the user's choice in a hidden input control:

btnClick.Attributes.Add("OnClick",
"javascript:myForm.inhConfirmResponse.value = confirm('Are you sure you wish
to exit?') ? 'true' : 'false'");

and in the aspx page:

<input type="hidden" id="inhConfirmResponse" runat="server" />

--
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]


If Cancel is
clicked, the event won't propagate to the server

But I want the event to propogate so that ASP.NET can invoke a
different sub-routine.

As already said, I want the confirm dialog to come up when a Button is
clicked. The code snippet I showed in post #1 does this. Now I want to
invoke a sub-routine when the user clicks 'OK' which can be easily done
using the OnClick event of the Button control using the following code
snippet (assume that this ASPX page is named 'Proceed.aspx')

<script runat="server">
Sub Page_Load(.....)
btnClick.Attributes.Add("OnClick", "javascript:return
confirm('Are you sure you wish to exit?');")
End Sub

Sub OKClicked(obj As Object, ea As EventArgs)
Response.Write("You clicked OK")
End Sub
</script>
<form runat="server">
<asp:Button ID="btnClick" OnClick="OKClicked" Text="PROCEED"
runat="server"/>
</form>

But if the user clicks 'Cancel' in the confirm dialog, I want ANOTHER
sub-routine named, say, 'CancelClicked' to be invoked. How do I invoke
the sub 'CancelClicked' when the user clicks 'Cancel' in the confirm
dialog? This is where I am getting stuck.

Actually prior to coming to this ASPX page named 'Proceed.aspx' that
has the above Button control, a few records entered by a user in
different Form fields get inserted in a temporary SQL Server 2005 DB
table. A user clicks this Button control; the JavaScript confirm dialog
with 'OK' & 'Cancel' buttons pops-up. If the user clicks 'OK', records
in the temporary table will be transferred to another DB table after
which, the records in the temporary table will get deleted. However, if
the user clicks 'Cancel' in the confirm dialog, then WITHOUT
transferring the records from the temporary table to the other DB
table, the records in the temporary table should get deleted.

That's precisely the reason why I want to execute a sub-routine even
when 'Cancel' in the confirm dialog is clicked.


Eliyahu said:
Are you asking on the server side? Your code already does it. If Cancel
is
clicked, the event won't propagate to the server.

--
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]


I have gone through a no. of posts in this NewsGroup regarding my
problem but alas, couldn't come across one which would have helped me
in resolving the issue. My problem is this:

An ASPX Form has a Button. When the Button is clicked, I want a
JavaScript confirm dialog to pop-up with the options 'OK' & 'Cancel'. I
have done this using the following code:

Sub Page_Load(....)
btnClick.Attributes.Add("OnClick", "javascript:return confirm('Are
you sure you want to exit?');")
End Sub

where 'btnClick' is the name of the Button.

The problem is how do I find out which of the 2 buttons, 'OK' or
'Cancel', has a user clicked? Any one can help me out with this?

My primary intention is if the user clicks 'OK' in the confirm dialog,
then function1 should get executed but if the user clicks 'Cancel',
then function2 should get executed.

In JavaScript, if 'OK' is clicked, then confiorm returns 1; if 'Cancel'
is clicked, then confirm returns 0.
 
M

Mark Rae

Please give your frank & honest opinion on this. To be very honest,
this is the first time I have created a custom control in ASP.NET &
hence would like to get some feedback from others - be it positive or
negative!

All are welcome to comment.

Not wishing to be discouraging, but it seems to me that you have gone
through a hugely tortuous and convoluted route to achieve something so
incredibly simple...
 
R

rn5a

Not wishing to be discouraging

Absolutely no problems at all....critics are a must for improvement...
but it seems to me that you have gone
through a hugely tortuous and convoluted route to achieve something so
incredibly simple...

You are very much correct. In fact, I had implemented exactly the same
functionality using just a few simple lines about a fortnight back. I
just wanted to get a hang of custom controls......that's it....
 
R

rn5a

BTW, Mark, could you please tell me what does the 'Protected' keyword
in the class file do?
 

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

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top