• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > js 实时监听input输入内容的N种方法

js 实时监听input输入内容的N种方法

作者:qq_31881193 字体:[增加 减小] 来源:互联网 时间:2018-01-05

qq_31881193通过本文主要向大家介绍了js实时监听input输入内容的N种方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

现在有一个需求,需要我们实时监听input输入框中的内容,从而带来更好的用户体验,而不是等我们全部输入完毕才告诉我们格式不对

首先我们创建一个input输入框

    <form name='loginForm'>
        <input type='text' name='user'/>
    </form>

接着获取这个文本框

var loginForm=document.forms['loginForm'],
    user=loginForm.elements['user'];
    //无需设置input的id属性,只设置name即可

方法一

change事件

user.onchange=function(){
    consolo.log(user.value);
}

没错,这个方法的确可以帮助我们解决监听input输入内容的需求,不过这个方法有一个致命的缺点,他不是实时监听,只有input失去焦点且文本框内容发生改变才会触发。
方法二

keydown事件

keypress事件

keyup事件

这是三个键盘事件,不过这三个事件还是有一些不同

1.当按一下任意键,会触发onkeydown事件,如果不松开,将一直触发。

2.当按一下字符键(比如abcd1234这些)会触发onkeypress事件,如果不松开,将一直触发这个事件。

3.当释放键盘上的键,才触发onkeyup事件。

4.按下一个键盘上的字符键,三种事件的触发顺序keydown -> keypress -> keyup

5.按下esc键,在firefox浏览器以及ie浏览器会触发keypress事件,在chrome浏览器和Opera浏览器不会触发keypress(js高级程序设计第三版P379页的说法并不精确)

        user.onkeypress=function(){
            console.log(user.value);
        };
        user.onkeydown=function(){
            console.log(user.value);
        };
        user.onkeyup=function(){
            console.log(user.value);
        }

实际检测时会发现,keydown事件以及keypress事件会存在延迟,每次获取的输入值,都是之前的,总是慢半拍,原因是keydown与keypress总是在新值发生改变之前触发。

最后发现只有keyup符合要求,不过keyup也不是完美的,缺点就是当你复制粘贴值进去的时候,或者浏览器自动记住的值输入进去的时候,keyup事件不会触发

方法三

input事件

        user.oninput=function(){
            console.log(user.value);
        }

input事件就可以完美解决这个问题,不过他也有小缺点,那就是兼容性问题,它不支持ie9以下的浏览器,不过还好,我们有一个ie专属的事件propertychange()

总结:在解决需求的时候,一定要记得验证兼容性,不然又被测试小姐姐要求修改bug

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11Vue.Js中的$watch()方法总结
  • 2017-05-11微信小程序 图片加载(本地,网路)实例详解
  • 2017-09-11js元素拖拽
  • 2017-05-11详解Vue 实例中的生命周期钩子
  • 2017-05-11Angular下H5上传图片的方法(可多张上传)
  • 2017-05-11AngularJS路由实现页面跳转实例
  • 2017-05-11纯js实现倒计时功能
  • 2017-05-11基于JS实现bookstore静态页面的实例代码
  • 2017-08-26简要记录ES6中Module的语法
  • 2017-05-11jQuery模拟淘宝购物车功能

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JS实现简单的天数计算器完整实例
    • JavaScript运行机制
    • 详解Angualr 组件间通信
    • 基于vue2.0+vuex的日期选择组件功能实现
    • 常用的js方法合集
    • js回车事件触发
    • Canvas实现动态的雪花效果
    • Angularjs 动态添加指令并绑定事件的方法
    • HTML5+jQuery实现搜索智能匹配功能
    • JavaScript制作简易计算器(不用eval)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有