0

私はこのコードを持っています

<script>
    $(document).ready(function () {
        $('.InternalSearchKeyword').keyup(function () {
            clearTimeout(typingTimer);
            if ($('.InternalSearchKeyword').val) {
                typingTimer = setTimeout(doneTypingKeyword, doneTypingInterval);
            }
        });

        function doneTypingKeyword() {
            alert('Hello');
            debugger;
        }
    });
</script

私の問題は、プログラムを実行しようとすると 2 回起動することです。IE でデバッグしようとすると、スクリプト ブロックが再度読み込まれていることに気付きました。スクリプト ブロックがスクリプトを起動するのを止める方法はありますか? 私はMVC 4で開発しています。

ドキュメントの準備が整うと、javascriptがロードされます。それをロードした後、scripblockはそれを再度ロードします。そのため、2つのイベントが発生し、イベントがある場合も2回発生し続けます。

4

1 に答える 1

0

私は ASP.NET に詳しくありませんが、何らかの理由でコードが 2 回実行されている場合は、それを考慮して jQuery を変更できます。

$(document).ready(function () {
    function handleSearchKeyword() {
        clearTimeout(typingTimer);
        if ($('.InternalSearchKeyword').val()) {
            typingTimer = setTimeout(doneTypingKeyword, doneTypingInterval);
        }
    }

    $('.InternalSearchKeyword').off('keyup', handleSearchKeyword).keyup(handleSearchKeyword);

    function doneTypingKeyword() {
        alert('Hello');
        debugger;
    }
});

keyupこれにより、その関数を実行しているハンドラーが存在する場合は削除され、新しいkeyupハンドラーがバインドされてその関数が実行されます。そのため、コードが何回実行されても、イベント ハンドラーは 1 つだけです。

于 2013-09-27T10:32:05.073 に答える