.NET Forum / ASP.NET / General / August 2007
adding javascript window.confirm to linkbutton
|
|
Thread rating:  |
darrel - 02 Aug 2007 22:37 GMT Is it possible to pre-empt the javascript function used to do a postback from a linkbutton?
I'd like to use linkbutton to delete a record and want to add a confirmation box via javascript "are you sure you want to delete this record?" before it executes the postback. The javascript is straightforward for this, but have no idea how to have that intercept the post-back script.
-Darrel
Mark Rae [MVP] - 02 Aug 2007 22:45 GMT > Is it possible to pre-empt the javascript function used to do a postback > from a linkbutton? [quoted text clipped - 4 lines] > straightforward for this, but have no idea how to have that intercept the > post-back script. Any JavaScript function which returns false will intercept a postback e.g.
<asp:Button ID="MyButton" runat="server" OnClick="MyButton_Click" OnClientClick="return confirm('Are you sure you want to delete this record?');" Text="Delete" />
In the above example, when a user clicks on the Delete button, they will be prompted with a client-side Yes/No alert - if they click Yes, the postback will happen and run the code in the server-side MyButton_Click method - if they click No, the postback will be intercepted and nothing further will happen...
 Signature Mark Rae ASP.NET MVP http://www.markrae.net
darrel - 02 Aug 2007 23:04 GMT > <asp:Button ID="MyButton" runat="server" OnClick="MyButton_Click" > OnClientClick="return confirm('Are you sure you want to delete this > record?');" Text="Delete" /> Slick, but can this be done with a linkButton? I don't see an OnClientClick property for that.
-Darrel
Mark Rae [MVP] - 02 Aug 2007 23:11 GMT >> <asp:Button ID="MyButton" runat="server" OnClick="MyButton_Click" >> OnClientClick="return confirm('Are you sure you want to delete this >> record?');" Text="Delete" /> > > Slick, but can this be done with a linkButton? I don't see an > OnClientClick property for that. Yep - in the Page_Load, add the following code:
MyLinkButton.Attributes.Add("onclick", "return confirm('Are you sure you want to delete this record?');");
 Signature Mark Rae ASP.NET MVP http://www.markrae.net
darrel - 02 Aug 2007 23:23 GMT > MyLinkButton.Attributes.Add("onclick", "return confirm('Are you sure you > want to delete this record?');"); Hmm...I've done that, but the event handler still executes for the linkButton regardless of whether I click OK or CANCEL in the confirmation window.
-Darrel
Mark Rae [MVP] - 02 Aug 2007 23:34 GMT >> MyLinkButton.Attributes.Add("onclick", "return confirm('Are you sure you >> want to delete this record?');"); > > Hmm...I've done that, but the event handler still executes for the > linkButton regardless of whether I click OK or CANCEL in the confirmation > window. Actually, having just tried this, <asp:LinkButton> most certainly *does* have an OnClientClick property: http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.linkbutton.on clientclick(vs.80).aspx
 Signature Mark Rae ASP.NET MVP http://www.markrae.net
Collin Chung - 03 Aug 2007 02:38 GMT > >> MyLinkButton.Attributes.Add("onclick", "return confirm('Are you sure you > >> want to delete this record?');"); [quoted text clipped - 9 lines] > Mark Rae > ASP.NET MVPhttp://www.markrae.net Hi guys, maybe Darrel is not using asp.net version 2.0, the msdn link above says the onclientclick property is new for .Net framework version 2.0 upwards. Anyway, to achieve the same effect using javascript:
<script> var mybutton = document.getElementById('linkButton1'); var oldonclickfunction = mybutton.onclick; //old postback method mybutton.onclick=function() { if(confirm('Are you sure you want to delete this record?')) {oldonclickfunction();} else{ return false;} } </script>
just need to replace linkButton1 with the button's id (extra caution to make sure it's the control's unique hierarchically qualified id, should be fine if the button is just on the form and not encapsulated in a panel, table, grid or user control).
-- Collin
darrel - 03 Aug 2007 15:44 GMT > Hi guys, maybe Darrel is not using asp.net version 2.0 Yes, apologies for not clarifying that.
This is still a 1.1 app we're maintaining.
2.0 is moving along with MOSS, but for now, we're still going to be doing a chunk of 1.1 work.
> Anyway, to achieve the same effect using > javascript: [quoted text clipped - 13 lines] > should be fine if the button is just on the form and not encapsulated > in a panel, table, grid or user control). Collin:
Don't I still need to apply some sort of onClick event to the linkButton, though? I'm not sure how the above script would know to intercept the onClick event if there's nothing to trigger it.
-Darrel
Mark Rae [MVP] - 03 Aug 2007 15:49 GMT > Don't I still need to apply some sort of onClick event to the linkButton, > though? I'm not sure how the above script would know to intercept the > onClick event if there's nothing to trigger it. MyLinkButton.Attributes.Add("onclick", "return confirm('Are you sure you want to delete this record?');");
 Signature Mark Rae ASP.NET MVP http://www.markrae.net
darrel - 03 Aug 2007 15:55 GMT > MyLinkButton.Attributes.Add("onclick", "return confirm('Are you sure you > want to delete this record?');"); Well, this is where my lack of Javascript skills begins to show. ;0)
Here's the function I'm using curtesy of Collin:
var mybutton = document.getElementById('lnkBtn_delete'); var oldonclickfunction = mybutton.onclick; //old postback method mybutton.onclick=function() { if(confirm('Are you sure you want to delete this record?')) {oldonclickfunction();} else{ return false;} }
Right now, that's giving me a 'mybutton has no properties' javascript error.
Mark, your onclick event makes sense, but that same confirm is also executing in the script of collins, so it appears that I'm going to cause double-alerts in this case (provided I can get the 'mybutton has no properties' error fixed...)
-Darrel
Mark Rae [MVP] - 03 Aug 2007 16:10 GMT > Well, this is where my lack of Javascript skills begins to show. ;0) > > Here's the function I'm using curtesy of Collin: > Mark, your onclick event makes sense, You can't have both...
 Signature Mark Rae ASP.NET MVP http://www.markrae.net
darrel - 03 Aug 2007 17:04 GMT >> Here's the function I'm using curtesy of Collin: >> Mark, your onclick event makes sense, > > You can't have both... Right. But that's kind of going back to my original problem...adding the confirmation on the OnClick event of the linkbutton does NOT intercept the postback. Regardless of whether or not I click OK or CANCEL, the postback is still executed.
-Darrel
Mark Rae [MVP] - 03 Aug 2007 17:59 GMT >>> Here's the function I'm using curtesy of Collin: >>> Mark, your onclick event makes sense, [quoted text clipped - 5 lines] > postback. Regardless of whether or not I click OK or CANCEL, the postback > is still executed. It's working perfectly for me, although I am of course using ASP.NET v2. I don't recall there being any problems in v1.x, though... Here's the code I'm using:
<asp:LinkButton ID="lnkButton" runat="server" OnClick="lnkButton_Click" OnClientClick="return confirm('Are you sure you want to delete this record?');" Text="Delete" />
protected void lnkButton_Click(object sender, EventArgs e) { string strTest = String.Empty; }
 Signature Mark Rae ASP.NET MVP http://www.markrae.net
darrel - 03 Aug 2007 18:04 GMT > It's working perfectly for me, although I am of course using ASP.NET v2. I > don't recall there being any problems in v1.x, though... Here's the code [quoted text clipped - 3 lines] > OnClientClick="return confirm('Are you sure you want to delete this > record?');" Text="Delete" /> Seems like 2.0 has a more intuitive 'OnClientClick' event.
If I apply the confirmation to the OnClick event in 1.1, the alert box works...it just doesn't stop the postback from executing.
-Darrel
Mark Rae [MVP] - 03 Aug 2007 19:30 GMT > Seems like 2.0 has a more intuitive 'OnClientClick' event. > > If I apply the confirmation to the OnClick event in 1.1, the alert box > works...it just doesn't stop the postback from executing. Fair enough - unfortunately, I can't confirm this as I retired my one remaining v1.1 installation quite a few months ago...
 Signature Mark Rae ASP.NET MVP http://www.markrae.net
darrel - 03 Aug 2007 20:05 GMT > Fair enough - unfortunately, I can't confirm this as I retired my one > remaining v1.1 installation quite a few months ago... I don't blame you. ;o)
-Darrel
darrel - 03 Aug 2007 21:51 GMT > If I apply the confirmation to the OnClick event in 1.1, the alert box > works...it just doesn't stop the postback from executing. ...CUASE I'M AN IDIOT!
doh'...finally realized it wasn't working because I forgot to put the RETURN in there before the confirm command.
Sorry...USER ERROR!
Thanks for all the help Mark and Collin!
-Darrel
Andrew Morton - 03 Aug 2007 16:29 GMT >> MyLinkButton.Attributes.Add("onclick", "return confirm('Are you sure >> you want to delete this record?');"); [quoted text clipped - 5 lines] > var mybutton = document.getElementById('lnkBtn_delete'); > var oldonclickfunction = mybutton.onclick; //old postback method Isn't JavaScript case-sensitive, so onclick should be onClick?
Andrew
darrel - 03 Aug 2007 17:11 GMT > Isn't JavaScript case-sensitive, so onclick should be onClick? 'doh! yea, good catch!
That said, I still get the 'mybutton has no properties' error.
-Darrel
Free MagazinesGet these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...
|
|
|