javascript - JS如何判断用户连续输入完?
天蓬老师
天蓬老师 2017-04-10 15:56:05
[JavaScript讨论组]

比如一个input输入框,在用户连续输入完之后才触发返回当前输入值,输入过程中不触发。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(12)
伊谢尔伦

三种方案:

  • 如果用户输入的内容是是固定长度的文本,比如说手机号码、身份证号码等等,则用keyup()事件监听input中内容length的变化,一旦达到临界值,就表示输入完成,自动提交

<input type='text' id='test'>
<script type="text/javascript">
var obj=document.getElementById("test");
obj.onkeyup=function(){
    if(obj.value.length>=XX){
        //code 向后台提交
    }
}
</script>
  • 监听focus事件,当失去focus时提交(这是我最常用的)

  • 如一楼,做延时处理,你的条件是用户连续输入,当监听到用户在2s之内没有输入时,提交

如果还有更好的方案,请立即通知我!

天蓬老师

本身没有这样的事件吧,你可以考虑做个延时处理,比如延时1s,每次有输入重置计时器

PHP中文网

通过keyUp事件和时间戳来判断吧

大家讲道理

监听Enter事件或focus事件

天蓬老师

可以用一个debounce方法,做空闲时间的间隔控制,是空闲时间必须大于或等于一定值(wait)的时候,才会执行调用方法。
用法参考
var lazyLayout = _.debounce(calculateLayout, 300);
$(window).resize(lazyLayout);

PHPz

关键词:函数节流

怪我咯

两种方式,判断用户输入停顿多长时间后才触发;用户每次按下键盘时带入当前时间与方法体内已获取的时间做比对,超过某一间隔及触发,如150毫秒。
这两种都是在一个定时器循环里做

巴扎黑
//失去焦点时触发
$("input").blur(function(){
  $("input").css("background-color","#D6D6FF");
});
阿神

使用间隔时间 和 离开焦点

黄舟

keyup的时候,在回调函数内用setTimeout生成一个事件队列,你的返回在这setTimeout函数中执行,如果用户连续输入时在keyup监听时候清除掉该队列。
var queue;

input.on('keyup', function (e) {

clearTimeout(queue);
queue = setTimeout(function () {//这里返回}, 1000);

});

输入过程我认为就是一段时间内没有停顿。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号