1

次のようなトリガーとして、更新パネルに関連付けられた検索ボタンがあります。

<asp:Panel ID="CRM_Search" runat="server">
    <p>Search:&nbsp;<asp:TextBox ID="CRM_Search_Box" CssClass="CRM_Search_Box" runat="server"></asp:TextBox>
    <asp:Button ID="CRM_Search_Button" CssClass="CRM_Search_Button" runat="server" Text="Search" OnClick="SearchLeads" /></p>
</asp:Panel>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="CRM_Search_Button" />
    </Triggers>
    <ContentTemplate> 
     /* Content Here */
    </ContentTemplate>
</asp:UpdatePanel>

私のJavaScriptでは、jQueryを使用して検索ボックスを取得し、キーアップを結び付けて検索ボタンをクリックさせます。

    $($(".CRM_Search_Box")[0]).keyup(
        function () {
            $($(".CRM_Search_Button")[0]).click();
        }
    );

入力が速すぎる場合を除いて、これは完全に機能します。入力が速すぎると(データが実際に返されるよりも速いかどうかと思います)、更新パネルだけでなく、ページ全体が更新されます(ポストバックを実行しますか?)。

また、入力する代わりに、ボタンをクリックするだけで同じことができるようになることもわかりました。

これを防ぐ方法はありますか?最初のリクエストが完了するまで、2番目のリクエストを防ぐことができますか?私が正しい方向に進んでいない場合、誰か他のアイデアがありますか?

ありがとう、
マット

4

1 に答える 1

3

そのようなことをして、彼に息を吹きかける方が良いです:)

私はタイマーを配置しているので、クリックを送信する前に250Mを待ちます。私はいつもそうしています。誰かが単語を入力したときに、プログラムが常に検索する理由がないため、検索を正しい方法で呼び出すことは決してありません。

また、これはあなたが抱えている問題を回避します。

var hTimeOut = null;
$($(".CRM_Search_Box")[0]).keyup(
        function () {
            if(hTimeOut)
                clearTimeout(hTimeOut);
            hTimeOut = setTimeout(function() { $($(".CRM_Search_Button")[0]).click(); }, 250);            
        }
);
于 2010-04-13T06:25:56.423 に答える