输入框value属性赋值触发js change事件的实现

1,045 阅读1分钟

①用户输入内容,或者粘贴内容,或者拖拽内容到输入框,都会触发input事件,失焦后会触发change事件;
②有一个是例外,那就是如果使用value属性赋值,无论是input事件还是change事件都不会触发;
③使用getOwnPropertyDescriptor方法先把浏览器原生的value赋值方法存下来,然后重新自定义value赋值方法,在重新自定义的value属性的set方法中注入change事件的触发;
④Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符;
⑤所谓自有属性,指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性;
⑥属性描述符也是个对象,英文叫做property descriptor,属性描述符也包含访问访问器函数(getter)的get方法和获取设置器函数(setter)的set方法;
⑦属性描述符对象支持的属性和方法包括:
1、value:该属性的值;
2、get:获取该属性的访问器函数,没有返回undefined;
3、set:获取该属性的设置器函数,没有返回undefined;
4、writable:当且仅当属性的值可以被改变时为true;
5、configurable:当且仅当指定对象的属性描述可以被改变或者属性可被删除时,为true;
6、enumerable:当且仅当指定对象的属性可以被枚举出时,为 true;
(参考:www.zhangxinxu.com/wordpress/2…)