主要涉及到的事件有:change, input,propertychange

  • 针对IE浏览器(IE11测试):
  1. change事件:
    输入框内容变化且失去焦点,触发change事件。
    <input type="text" value="4545">
    var input = document.querySelector('input')input.addEventListener('change', function(params) {console.log('params', params)})

值得一提的是从IE9开始,IE已经摒弃了attachEvent用来监听事件的方法。
通过js代码修改的input输入框的value值不会触发change事件。

    input.setAttribute('value', 1212)
  1. propertychange事件
    输入框内容变化,实时触发propertychange事件
    在IE9之前使用propertychange事件名,但是IE9以后便统一使用input事件名来实时监听,所以这里我们也不做过多研究。
  • 针对除IE外的其他浏览器(chrome:68.0.3440.106测试)
  1. change事件
    跟IE11浏览器的测试结果一样,都是输入框内容变化且失去焦点的时候会触发change事件,通过js代码来改变输入框的value值不会触发change事件。
  2. input事件
   input.addEventListener('input', function(params) {console.log('params', params)})

但是如果是通过js代码来改变input输入框的value值也不会触发input事件。

如果想要对js代码改变输入框的值进行监听,可以使用MutationObserver

 var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;var input = document.querySelector('input');var observer = new MutationObserver(function(mutations) {// console.log('mutations',mutations)mutations.forEach(function(record) {if(record.attributeName == "value"){// console.log('record.target',record.target)console.log('record.oldValue',record.oldValue)}});});observer.observe(input, {attributes: true,childList: true,characterData: true,attributeOldValue :true,attributeFilter:["value"]//只监听value属性,提高性能});input.setAttribute('value', 1212)input.setAttribute('value', 1212)

输出结果为:

以上方法对IE11和chrome68.0.3440.106效果相同。可以看到的是,只要设置了input的value值,不管该值是不是和原值相同,即是不是发生了变化,都可以通过MutationObserver的observe方法监听到,并调用回调函数进行响应处理。
参考:https://www.cnblogs.com/rubylouvre/archive/2012/05/28/2520721.html

input输入框的事件监听相关推荐

  1. 微信小程序批量获取input的输入值,监听输入框,数据同步

    微信小程序批量获取input的输入值,监听输入框,数据同步 在使用小程序时,跟vue的数据绑定不一样,没有v-model这个属性了,官网也只是给了一些事件监听. 但是我们如果有多个表单时,需要写多个事 ...

  2. [JS-DOM]事件监听机制

    事件监听机制 概念:某些组件被执行了某些操作后,触发某些代码的指行.*事件: 某些操作.如:单击,双击,键盘按下了,鼠标移动了.*事件源:组件.如:按钮,文本输入框...*监听器:代码.*注册监听:将 ...

  3. 二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定

    四.事件监听 在前端开发中,我们需要经常和用于交互. 这个时候,我们就必须监听用户发生的时间,比如点击.拖拽.键盘事件等等 在Vue中如何监听事件呢?使用v-on指令 v-on介绍 作用:绑定事件监听 ...

  4. 事件监听watch框架vue2.x与3.x都适用

    前言: 目前正在学习vue或者对vue部分使用不太熟悉的可以跟着的我文章,打开编辑器,安装vue-cli一步步的练习,不会安装vue-cli脚手架的小伙伴可以先看这篇文章https://blog.cs ...

  5. java中事件监听_Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  6. layui监听当前页_事件监听 · layui使用手册 · 看云

    # 事件监听 语法:form.on('event(过滤器值)', callback); form模块在 layui 事件机制中注册了专属事件,所以当你使用layui.onevent()自定义模块事件时 ...

  7. Java中事件监听机制

    Java中事件监听机制 一.事件监听机制的定义 要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如, ...

  8. Jquery系列:checkbox 获取值、选中、设置值、事件监听等操作

    <div id="divId" class="divTable"><div class="tableBody">&l ...

  9. vue中的v-on事件监听机制

    监听dom事件使用v-on指令: v-on:事件类型="一个函数" 这个事件类型可以自定义 简写: @事件类型="一个函数"⭐ 1.作用:绑定事件监听,表达式可 ...

最新文章

  1. 使用JDK自带jvisualvm监控tomcat
  2. python列表的小东西_Python---列表相关操作
  3. 基于 Lucene 的桌面文件搜索
  4. 【BOM精讲】BOM 进阶
  5. Java中四种访问修饰符的区别
  6. Vue2.0 的漫长学习ing-2-6
  7. mysql事务锁导致tomcat崩溃_数据库连接池连接耗尽,导致tomcat请求无响应,呈现出假死状态...
  8. 【Flink】改进的BLOB存储架构
  9. Oracle统一访问代理层方案
  10. FineReport 参数查询
  11. Unity WebGL部署
  12. 【脑洞大开】《西潮》及《走向世界丛书》
  13. Python-小游戏-乌龟吃鱼
  14. 什么是加密?什么是md5加密算法?
  15. 国家电网(部分单位)2020年第二批高校毕业生录用人选公示
  16. 蓝桥杯——猴子吃面包
  17. 人工智能面试总结-正则优化函数
  18. php开源广告系统,广告操作指南
  19. 应用大数据助力车险反欺诈
  20. 标志寄存器df_标志寄存器的概念

热门文章

  1. android usb 默认mtp,usb修改为默认MTP模式
  2. 随笔杂记(十)——C++:C4996报错解决方法
  3. iOS-MMKV的使用
  4. 第一个项目(热敏打印机)
  5. 【Redis】大数据量(百亿级)Key存储需求及解决方案
  6. 青少年护眼灯哪个牌子好?儿童护眼灯品牌推荐
  7. matlab高程数据点,matlab 对tif数据高程图的处理分析
  8. jstack命令 详解
  9. Mysql错误代码1045
  10. 最大熵模型的特征函数及约束条件