1

如何清除这个函数的Timeout?

这是我的代码,我试过但没有用。

我能怎么做 ?

..................................................... ..................................................... ..................................................... …………

<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>
4

1 回答 1

5

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

为了不污染全局范围(使用timer,runstop),我将所有内容包装在 jQuery 的就绪处理程序中并使用它来绑定事件处理程序

<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);
        }
    });
});
于 2015-05-18T05:38:36.167 回答