如何清除超时这个功能

如何清除超时这个功能

如何清除超时这个功能?

这是我的代码,我尝试但不起作用。

我能怎么做 ?

................................................... ................................................... ................................................... .......

<form id="fid">
    <input type="text" id="input_type" onkeypress="stop()" onkeyup="run()"/>
</form>

    <p id="myplace"></p>

    <script>
    function run() {
        $('#myplace').hide();
        setTimeout(function(){
            $.ajax
            (
                {
                    url: 'xx.php',
                    type: 'POST',
                    data: $('#fid').serialize(),
                    cache: false,
                    success: function (data) {
                        $('#myplace').show();
                        $('#myplace').html(data);
                    }
                }
            )
        }, 3000);
    }

    function stop() {
        clearTimeout();
    }
    </script>

最佳答案

您需要传递timeoutID。请参见https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout

为了不污染全局范围(使用timerrunstop),我将所有内容包装在jQuery的ready处理程序中,并使用其绑定事件处理程序

<form id="fid">
    <input type="text" id="input_type">
</form>




jQuery(function($) {

    var myplace = $('#myplace'), form = $('#fid'), timer = null;

    $('#input_type').on({
        keypress: function() {
            clearTimeout(timer);
        },
        keyup: function() {
            myplace.hide();
            timer = setTimeout(function() {
                $.post('xx.php', form.serialize(), function(data) {
                    myplace.html(data).show();
                });
            }, 3000);
        }
    });
});

07-24 17:34