原生方法onchange事件当发生变化并且失去焦点时触发。即失去焦点且内容未发生变化时不触发,内容发生变化但焦点未发生变化时不会实时触发。js直接改变值时不触发oninput事件functioninp(data){console.log(data.value)}oninput事件输入内容变化时实时触发。oninput事件是除IE外大部分浏览器都支持的事件,当值发生变化时实时触发。js直接改变值时不触发。onpropertychange事件onpropertychange事件是实时触发的。每次添加或删除字符时都会触发它。js变化也会触发,但是这个事件是IE独有的。当输入设置为disable=true时,不会触发。oninput事件和onpropertychange事件的区别:onpropertychange事件由任何属性改变触发,而oninput只有在值改变时才会触发,oninput必须通过addEventListener()注册,onpropertychange注册方法与一般事件。oninput与onpropertychange结合使用。 oninput是HTML5中的标准事件。它对于通过用户界面检测textarea、input:text、input:password和input:search元素的内容变化非常有用。触发,不像onchange事件需要失去焦点才能触发。IE9以下版本不支持oninput事件。它需要替换为IE特定的onpropertychange事件。当用户界面发生改变或脚本直接修改内容时会触发该事件。有以下几种情况:input:checkbox或input被修改:radio元素的选中状态,checked属性改变。input:text或textarea元素的值被修改,value属性改变。select元素的选中项被修改,selectedIndex属性改变。 监听onpropertychange事件后,可以使用该事件的propertyName属性获取更改后的属性名称。 集合oninput&onpropertychange监听输入框内容变化的示例代码如下://Firefox,GoogleChrome,Opera,Safari,InternetExplorerfromversion9functionOnInput(event){alert("newcontent:"+event.target.value);}//InternetExplorerfunctionOnPropChanged(event){if(event.propertyName.toLowerCase()=="value"){alert("Thenewcontent:"+event.srcElement.价值);}}使用jQuery只需要同时绑定oninput和onpropertychange事件时间。示例代码如下:$('textarea').bind('inputpropertychange',function(){$('.msg').html($(this).val().length+'characters');}); 最后要注意的是oninput和onpropertychange这两个事件在IE9中都有一个小bug,就是在通过右键菜单中的剪切和删除命令删除内容时不会触发,但是其他版本的IE都是正常的。