Link-Taste auf der Seite und legen Sie es als Standard-Schaltfläche, funktioniert in IE, aber nicht in Mozila
-
06-09-2019 - |
Frage
Ich habe eine Link-Taste auf der Seite und legen Sie es als Standard-Schaltfläche, es funktioniert in IE gut, aber funktioniert nicht in Mozila Firefox. Hat jemand eine Ahnung, wie dieses Problem zu lösen?
Lösung
Ich hatte diese Art von Problem mit FF3 und ASP.NET Linkbuttons. Dies scheint ein Fehler mit FF3 (nicht sicher) zu sein, aber das Skript, das weiter unten festgelegt ist:
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;
}
Halten Sie es am Ende der Seite, so dass es die WebForm_FireDefaultButton
Methode von ASP.NET gemacht außer Kraft setzt.
Andere Tipps
Die DefaultButton
Eigenschaft ist nicht für die Verwendung mit einem LinkButton
unterstützt. http://msdn.microsoft.com/en-us/ Bibliothek / system.web.ui.webcontrols.panel.defaultbutton.aspx
Die einfachste Lösung, die eine Dummy-Taste auf Ihrer Seite mit style="display:none"
enthalten ist, festgelegt, dass als default und gibt ihnen die gleichen Event-Handler als Linkbutton.
Mein erster Stapelüberlauf Schreib, 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));
}
arbeiten nur erste Mal, dass wir in Textbox eingeben drücken. Nach einigem Text in Textfeld hinzufügen und geben Sie dann drückt, wird Standard-Schaltfläche nicht ausgelöst.
Ich denke, die sehr einfach, nur onkeypress js Ereignis von Textbox hinzufügen, wo Post zurück erforderlich.
txtUserName.Attributes.Add("onKeyPress", "javascript:if (event.keyCode == 13)
__doPostBack('" + btnLogin.UniqueID + "','')");
hoffen, dass diese hilfreich sein wird.