赞
踩
<body> <input id='inputValue' oninput="inputValueChange()" /> </body> <script> var timeoutID=0; function inputValueChange(){ let inputValue = document.getElementById("inputValue").value; //空值不触发事件 if(inputValue == '') return; clearTimeout(timeoutID); //两次输入时间小于500ms时 清除上一个延时器 //设置新的延时器 timeoutID = setTimeout(function(){ //ajax请求 console.log(inputValue) },500); } </script>
当浏览器有非直接的文字输入时, compositionstart事件会以同步模式触发。
当浏览器是直接的文字输入时, compositionend会以同步模式触发。
<body> <input id='inputValue' oninput="inputValueChange()" /> </body> <script> var cpFlag = false; var timeoutID=0; var input = document.getElementById("inputValue"); function inputValueChange(){ let inputValue = input.value; //空值不触发事件 console.log(1); if(inputValue == '') return; if(cpFlag == true){ return; } clearTimeout(timeoutID); //两次输入时间小于500ms时 清除上一个延时器 //设置新的延时器 timeoutID = setTimeout(function(){ //ajax请求 console.log(inputValue) },500); } //监听中文输入开始 input.addEventListener('compositionstart', function(){ console.log("s"); cpFlag = true; }) //监听中文输入结束 input.addEventListener('compositionend', function(){ console.log("e") cpFlag = false; }) </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。