Fazer a ligação Botão na página e defini-lo como botão padrão, funcionam bem no IE, mas não no Mozila

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

  •  06-09-2019
  •  | 
  •  

Pergunta

Eu tenho um botão de link na página e defini-lo como botão padrão, ele funciona bem no IE, mas não funciona no Mozila Firefox. Alguém tem alguma idéia de como resolver esse problema?

Foi útil?

Solução

Eu tive esse tipo de problema com FF3 e ASP.NET linkbuttons. Este parece ser um bug com FF3 (não tenho certeza), mas o script que fixa é dado abaixo:

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

Mantenha-o no final da página para que ele substitui o método WebForm_FireDefaultButton proferida pelo ASP.NET.

Outras dicas

A propriedade DefaultButton não é suportado para uso com um LinkButton. http://msdn.microsoft.com/en-us/ biblioteca / system.web.ui.webcontrols.panel.defaultbutton.aspx

A solução mais fácil é incluir um botão de manequim na sua página com style="display:none", defina-o como o DefaultButton e dar-lhe os mesmos manipuladores de eventos como o seu LinkButton.

A minha primeira gravação Stack Overflow, 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));
}

trabalho somente nós de imprensa primeira vez entrar na caixa de texto. Depois de adicionar algum texto na caixa de texto e, em seguida, pressionar enter, botão padrão não irá fogo.

Eu acho que é muito simples, basta adicionar js onkeypress caso de caixa de texto onde é exigido de volta post.

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

Esperamos que este será útil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top