Link-Taste auf der Seite und legen Sie es als Standard-Schaltfläche, funktioniert in IE, aber nicht in Mozila

StackOverflow https://stackoverflow.com/questions/938957

  •  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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top