页面上的链接按钮并将其设置为默认按钮,在 IE 中工作正常,但在 Mozila 中不行

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

  •  06-09-2019
  •  | 
  •  

我有一个 链接按钮 在页面上并将其设置为默认按钮,它在 IE 中工作正常,但在 Mozila Firefox 中不起作用。有人知道如何解决这个问题吗?

有帮助吗?

解决方案

我在使用 FF3 和 ASP.NET 链接按钮时遇到了此类问题。这似乎是 FF3 的一个错误(不确定),但修复的脚本如下:

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

将其保留在页面末尾,以便它覆盖 WebForm_FireDefaultButton 由 ASP.NET 呈现的方法。

其他提示

DefaultButton 属性不支持与 LinkButton. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx

最简单的解决方案是在页面上包含一个虚拟按钮 style="display:none", ,将其设置为默认按钮,并为其提供与 LinkBut​​ton 相同的事件处理程序。

我的第一个堆栈溢出写,哇: - )

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

工作只是我们第一次按下文本框中输入。加入在文本框中一些文本,然后按下输入后,默认按钮将不会触发。

我认为它非常简单,只需添加回哪里需要交文本框的onkeypress事件的js事件。

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

希望这将是有帮助的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top