1

以下で構成される検索フォームがあります...

<asp:Panel DefaultButton="btnSearch" ... >

    [...search criteria fields...]

    <asp:Button ID="btnReset" OnClick="btnReset_Click" ... />
    <asp:Button ID="btnSearch" OnClick="btnSearch_Click" ... />

</asp:Panel>

望ましい動作は、Enterキーを押すと呼び出されることです (これは の属性のbtnSearch_Clickおかげで機能しています) 。DefaultButtonasp:panel

問題は、btnResetフォーカスがある場合、代わりに押すEnterと呼び出す必要があることですbtnReset_Click(そうではありません-常にbtnSearchです)。

defaultButtonこれはどうにかして簡単に実現できますか?それとも、.NET のイベント ハンドラーをインターセプトするために特注の JS をハックする必要がありますか?

前もって感謝します。


ETA: 以下の HenryChuang の受け入れられた回答に基づいて、私が行った再利用可能なソリューションを次に示します。

  1. preventDefaultButtonカスタム属性をパネルに追加します。

    <asp:Panel DefaultButton="btnSearch" preventDefaultButton="btnReset" >
    
        [...search criteria fields...]
    
        <asp:Button ID="btnReset" OnClick="btnReset_Click" ... />        
        <asp:Button ID="btnSearch" OnClick="btnSearch_Click" ... />
    
    </asp:Panel>
    
  2. ページロード時に次の jQuery を実行します。

    $("div[preventDefaultButton]").each(function () {
    
        var div = $(this);
        var keypressEvent = div.attr("onkeypress");
        var btn = $("input[id$=" + div.attr("preventDefaultButton") + "]");
    
        btn.on("focus", { div: div }, function (event) {
            event.data.div.attr("onkeypress", "");
        });
    
        btn.on("blur", { div: div, keypressEvent: keypressEvent }, function (event) {
            event.data.div.attr("onkeypress", event.data.keypressEvent);
        });
    
    });
    
4

2 に答える 2

0

パネル生成htmlを参照してください

<div id="yourPanelClientID" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'btnSearch')">

そのため、btnReset onfocus 時に Panel の onkeypress イベントを中断し、以下を btnReset に追加します。btnReset onblur を覚えておいて、Panel の keypress を oringinal に変更します

onfocus="document.getElementById('yourPanelClientID').onkeypress = '';"
onblur="funA();"
function funA() {
        document.getElementById('yourPanelClientID').onkeypress = function () { return WebForm_FireDefaultButton(event, "btnSearch") };
    }

このような

 <asp:Button ID="btnReset"
 onfocus="document.getElementById('yourPanelClientID').onkeypress = '';" 
onblur="funA();"
onclick="btnReset_Click" .../>
于 2013-05-20T07:34:54.017 に答える