Botón de enlace en la página y configurarlo como botón predeterminado, funciona bien en IE pero no en Mozila

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

  •  06-09-2019
  •  | 
  •  

Pregunta

Tengo un botón en la página y configurarlo como botón predeterminado, funciona bien en IE pero no funciona en Mozila Firefox. ¿Alguien tiene alguna idea de cómo resolver este problema?

¿Fue útil?

Solución

he tenido este tipo de problema con FF3 y ASP.NET linkbuttons. Esto parece ser un error con FF3 (no estoy seguro), pero el guión que se fija es el siguiente:

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;
}

Mantener al final de la página para que se reemplaza el método WebForm_FireDefaultButton dictada por ASP.NET.

Otros consejos

La propiedad DefaultButton no es compatible para su uso con un LinkButton. http://msdn.microsoft.com/en-us/ biblioteca / system.web.ui.webcontrols.panel.defaultbutton.aspx

La solución más sencilla es incluir un botón de maniquí en su página con style="display:none", establece que a medida que la defaultButton y darle los mismos controladores de eventos como su LinkButton.

Mi primer desbordamiento de pila de escritura, 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));
}

trabajar sólo la primera vez que pulsar ENTER en el cuadro de texto. Después de añadir un poco de texto en el cuadro de texto y luego presionar ENTER, botón predeterminado no se disparará.

Creo que es muy sencillo, basta con añadir caso de cuadro de texto donde se requiere volver después onkeypress js.

txtUserName.Attributes.Add("onKeyPress", "javascript:if (event.keyCode == 13)
 __doPostBack('" + btnLogin.UniqueID + "','')");

Esperamos que esto sea útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top