Javascript 如何在用户输入时检测“输入”值的变化?

Javascript 如何在用户输入时检测“输入”值的变化?,javascript,jquery,Javascript,Jquery,我想做的是,有一个输入框,当用户输入任何内容时,代码应该向服务器发出请求,并向用户返回一些数据 这只是一个typeahead建议功能,但仍然不完全相同 我目前拥有的是以下代码 $(“输入”)。打开(“输入”,功能(ev){ 警报(`${ev.type}检测到事件`) }) 您可以在按下一个键时设置计时器,如果按下另一个键且计时器仍在运行(计时器变量不为空),请在再次设置计时器之前取消计时器 var定时器; $(“输入”)。打开(“输入”,功能(ev){ 中频(定时器){ 清除超时(计时器);

我想做的是,有一个
输入
框,当用户输入任何内容时,代码应该向服务器发出请求,并向用户返回一些数据

这只是一个
typeahead
建议功能,但仍然不完全相同

我目前拥有的是以下代码

$(“输入”)。打开(“输入”,功能(ev){
警报(`${ev.type}检测到事件`)
})

您可以在按下一个键时设置计时器,如果按下另一个键且计时器仍在运行(计时器变量不为空),请在再次设置计时器之前取消计时器

var定时器;
$(“输入”)。打开(“输入”,功能(ev){
中频(定时器){
清除超时(计时器);
定时器=空;
}
计时器=设置超时(函数(){
log(`${ev.type}事件检测到`);
定时器=空;
}, 1000);
})

这里是一个示例代码,在完成键入后1秒执行

基本上就是它的功能。只需设置一个
setTimeout
键,如果在1000毫秒之前按下另一个键,则
clearingTimeout
。否则,将执行
setTimeout

var-typingTimer;
var doneTypingInterval=1000;
$(“input[type='text'])。在('input',函数(e)上{
clearTimeout(键入计时器);
typingTimer=setTimeout(doneTyping,doneTypingInterval);
});
函数doneTyping(){
警惕(“嘿!”);
}

您只需设置超时和标志。 对于每个事件,您都将标志设置为true,但当超时发生时,您只运行代码一次,然后为以后的事件重置标志

$(“输入”)。打开(“输入”,功能(ev){
$(此)。数据({
更改:正确
});
window.setTimeout(()=>{
if($(this).data(“已更改”)==true){
警报(`${ev.type}检测到事件`);
$(此)。数据({
更改:false
});
}
}, 1000);
});

要检测
输入
值在用户输入时的变化,只需检查
输入
事件-

$('testId')。打开(“输入”,函数(e){
var valInput=$('#testId').val();
$('#inputVal').html(valInput);
$('#inputChar').html(valInput.length);
})



您键入了:
字符数:0