I have a link button on the page and set it as default button, It works fine in IE but not working in Mozila Firefox. Does anybody have any clue how to resolve this issue?
-
What I have check it, Link Button could not be set as default in MozilaMuhammad Akhtar– Muhammad Akhtar2009-06-02 11:17:41 +00:00Commented Jun 2, 2009 at 11:17
-
No my friend; you have to set the DefaultButton property of the HtmlForm (asp:Form) on the page. Set it to the id of the LinkButton and it will work automatically.Kirtan– Kirtan2009-06-02 13:02:44 +00:00Commented Jun 2, 2009 at 13:02
-
And if you want multiple default buttons on a single form, use an asp:Panel control; group your controls accordingly and set the DefaultButton property of the panel. Just be sure to put the button in that respective panels.Kirtan– Kirtan2009-06-02 13:04:07 +00:00Commented Jun 2, 2009 at 13:04
-
Thanks, that's right, now event is fired and working but now get another problem doing so, I am calling an encryption method on OnClientClick, that's is called when I click on the link button, but not not called when I hit enter buttonMuhammad Akhtar– Muhammad Akhtar2009-06-02 13:23:21 +00:00Commented Jun 2, 2009 at 13:23
-
I think what happen here is, when hitting enter button, javascript WebForm_FireDefaultButton method called and click event is fired and it ignores others event like onclientClick.Muhammad Akhtar– Muhammad Akhtar2009-06-02 13:41:12 +00:00Commented Jun 2, 2009 at 13:41
5 Answers
The DefaultButton property is not supported for use with a LinkButton. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx
The easiest solution is to include a dummy Button on your page with style="display:none", set that as the defaultbutton and give it the same event handlers as your LinkButton.
2 Comments
click property of the button. However, whilst IE implements a click property for links, other browsers do not. This is why the current implementation of the DefaultButton functionality only works for LinkButtons in IE.I had this kind of issue with FF3 and ASP.NET linkbuttons. This seems to be a bug with FF3 (not sure), but the script that fixed is given below:
var __defaultFired = false;
function WebForm_FireDefaultButton(event, target) {
var element = event.target || event.srcElement;
if (!__defaultFired && event.keyCode == 13 && !(element && (element.tagName.toLowerCase() == "textarea"))) {
var defaultButton;
if (__nonMSDOMBrowser)
defaultButton = document.getElementById(target);
else
defaultButton = document.all[target];
if (defaultButton) {
if(typeof(defaultButton.click) != "undefined")
defaultButton.click();
else
eval(unescape(defaultButton.href.replace("javascript:", "")));
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
}
return true;
}
Keep it at the end of the page so that it overrides the WebForm_FireDefaultButton method rendered by ASP.NET.
Comments
My first Stack Overflow write, wow :-)
asp.net:
<asp:Panel runat="server" DefaultButton="lbHello">
First name: <asp:TextBox runat="server" ID="txtFirstName" />
<asp:LinkButton ID="lbHello" Cssclass="button" runat="server" Text="Click me" OnClick="lbHello_Click" />
</asp:Panel>
js:
$(document).ready(function () { $('.button').eventClick(); });
$.fn.eventClick = function() {
function eventClick(a) {
if (a && typeof (a.click) == 'undefined') {
a.click = function () {
var result = true;
if (a.onclick) result = a.onclick();
if (typeof (result) == 'undefined' || result) {
eval(a.getAttribute('href'));
}
}
}
}
return eventClick($(this).get(0));
}