3

イベントを発生させるJavascript関数を作成したいのですがonkeyup、そのタスクはメインリゾルバー関数を呼び出すことですxが、関数パラメーターであるxミリ秒以上キーが発生しない場合に限ります。

例えば:

HTMLコードがあります:

<body>
    <input type="text" id="suggestion" onkeyup="callMe(200);"/>
</body>

およびJavascriptのようなもの:

<script type="text/javascript">
    function callMe(ms)
    {
        //wait at least x ms then call main logic function
        // e.g. doMain();
        alert("I've been called after timeout"); //for testing purposes
    }
</script>

したがって、私が入力している間、少なくとも x ミリ秒の間何も入力しない限り、アラートは呼び出されません。

4

2 に答える 2

9

タイマーを使用できますが、毎回前のタイマーをクリアする必要もあります。

これを実現するには、「ラッパー」機能を使用することをお勧めします。

<input type="text" id="suggestion" onkeyup="DelayedCallMe(200);"/>

そして JavaScript:

var _timer = 0;
function DelayedCallMe(num) {
    if (_timer)
        window.clearTimeout(_timer);
    _timer = window.setTimeout(function() {
        callMe(num);
    }, 500);
}

これにより、最後のキーアップ イベントから 500 ミリ秒後に関数が実行されます。

ライブ テスト ケース

于 2012-12-17T08:52:42.957 に答える
1
<input type="text" id="suggestion" onkeyup="callMe(200);"/>
<script>
    var to;
    function callMe(ms) {
       clearTimeout(to);
       to = setTimeout(function(){
           alert("I've been called after timeout");
       }, ms);
    }
</script>

​

デモ

于 2012-12-17T08:58:09.503 に答える