jquery 检测用户何时停止写入

yrdbyhpb  于 2023-03-17  发布在  jQuery
关注(0)|答案(1)|浏览(144)

我是初学者网络开发。我有简单的代码来获取数据(ID的)从PHP到JS数组。然后我显示选定的项目。它的工作很好。这是很容易的代码自动搜索时,用户写的东西在输入我需要添加警报时,用户停止打字。我有这个代码:

function szukajCzesci() {
    let input = document.getElementById('szukajCzesci');
    let inputLenght = 0;
    inputLenght = input.value.length;
    let selectedPm = [];
    if (inputLenght >= 3) {
        $('.narrow').hide();
        $.ajax({
            url: xxxx.php",
            data: "xml=" + Base64.encode('xxxxxxxx'),
            type: 'POST',
            async: true,
            cache: false,
            dataType: 'json',
            success: function(response) {
                $('.narrow').hide();
                $.each(response, function(key,value) {
                    selectedPm.push(value.CZPM);
                });

                if(selectedPm.length === 0)
                {
                    $('.error-brak-czesci').show();
                }
                else
                {
                    $('.error-brak-czesci').hide();
                }

                let numItems = $('.narrow').length;
                $('.narrow').each(function(index, element) {
                    let isLastElement = index == numItems -1;
                    let input = $(this).find('input').val();
                    if(jQuery.inArray(input, selectedPm) != -1) {
                        $(this).show();
                    }

                    if (isLastElement) {
                        //$('#edtNazwaUszkodzonegoZespolu').click();
                    }
                });
            }
        });
    }
    if (inputLenght === 0)
    {
        $('.error-brak-czesci').hide();
        $('.narrow').show();
    }
}
<input type="text" id="szukajCzesci" value="" onkeyup="szukajCzesci();"/>

我需要显示警报时,用户停止写作。
我该怎么做呢?
请帮帮我。

hm2xizp9

hm2xizp91#

下面是修改代码的方法:

let typingTimer;
const doneTypingInterval = 1000; // time in ms (1 second)

function szukajCzesci() {
    let input = document.getElementById('szukajCzesci');
    let inputLenght = 0;
    inputLenght = input.value.length;
    let selectedPm = [];
    
    // Clear the typing timer when user starts typing again
    clearTimeout(typingTimer);
    
    if (inputLenght >= 3) {
        $('.narrow').hide();
        $.ajax({
            url: xxxx.php",
            data: "xml=" + Base64.encode('xxxxxxxx'),
            type: 'POST',
            async: true,
            cache: false,
            dataType: 'json',
            success: function(response) {
                $('.narrow').hide();
                $.each(response, function(key,value) {
                    selectedPm.push(value.CZPM);
                });

                if(selectedPm.length === 0)
                {
                    $('.error-brak-czesci').show();
                }
                else
                {
                    $('.error-brak-czesci').hide();
                }

                let numItems = $('.narrow').length;
                $('.narrow').each(function(index, element) {
                    let isLastElement = index == numItems -1;
                    let input = $(this).find('input').val();
                    if(jQuery.inArray(input, selectedPm) != -1) {
                        $(this).show();
                    }

                    if (isLastElement) {
                        //$('#edtNazwaUszkodzonegoZespolu').click();
                    }
                });
            }
        });
    }
    if (inputLenght === 0)
    {
        $('.error-brak-czesci').hide();
        $('.narrow').show();
    }
    
    // Set a timer to check if user stopped typing
    typingTimer = setTimeout(function() {
        alert('User stopped typing');
    }, doneTypingInterval);
}

在此代码中,“typingTimer”变量保存用于检查用户是否停止键入的计时器。“doneTypingInterval”变量保存用户停止键入后将显示警报的时间(以毫秒为单位)。
调用'szukajCzesci'函数时,它首先使用'clearTimeout(typingTimer)'清除键入计时器,然后使用'setTimeout'设置计时器,这将调用在指定间隔后显示警报的函数。

相关问题