3

ページにリンクボタンがあり、デフォルトボタンとして設定しています。IEでは正常に動作しますが、MozilaFirefoxでは動作しません。誰かがこの問題を解決する方法の手がかりを持っていますか?

4

5 に答える 5

14

このDefaultButtonプロパティは、での使用はサポートされていませんLinkButtonhttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.panel.defaultbutton.aspx

最も簡単な解決策は、ページにダミーのボタンを含め、それをデフォルトボタンstyle="display:none"として設定し、LinkBut​​tonと同じイベントハンドラーを指定することです。

于 2011-04-26T09:36:20.980 に答える
2

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_FireDefaultButtonASP.NETによってレンダリングされたメソッドをオーバーライドするように、ページの最後に保持します。

于 2009-06-02T11:21:22.253 に答える
1

私の最初のStackOverflow書き込み、すごい:-)

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));
}
于 2012-04-12T22:00:33.367 に答える
0

テキストボックスでEnterキーを押したときにのみ機能します。テキストボックスにテキストを追加してEnterキーを押した後、デフォルトボタンは起動しません。

于 2009-10-30T07:16:42.110 に答える
0

非常に単純だと思います。ポストバックが必要なテキストボックスのonkeypressjsイベントを追加するだけです。

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

これがお役に立てば幸いです。

于 2011-10-13T14:01:53.050 に答える