实时监听文本框值变化是很是常见的功能,一般最简单的办法就是用keyup,keydown来实现,可是这种方法有两个问题,一个是当直接复制粘贴的时候无法监听到事件,另一个问题是在移动端,使用删除键删除输入时候也没法监听到!html
一、使用onchange事件浏览器
onchange事件是文本框内容改变并失去焦点的时候才触发。函数
二、比较完美的解决办法:oninput和onproperthis
oninput 是 HTML5 的标准事件,对于检测 textarea, input:text, input:password 和 input:search 这几个元素经过用户界面发生的内容变化很是有用,在内容修改后当即被触发,不像 onchange 事件须要失去焦点才触发。oninput 事件在主流浏览器的兼容状况以下:spa
从上面表格能够看出,oninput 事件在 IE9 如下版本不支持,须要使用 IE 特有的 onpropertychange 事件替代,这个事件在用户界面改变或者使用脚本直接修改内容两种状况下都会触发,有如下几种状况:code
在监听到 onpropertychange 事件后,可使用 event 的 propertyName 属性来获取发生变化的属性名称。htm
集合 oninput & onpropertychange 监听输入框内容变化的示例代码以下:blog
// Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
function OnInput (event) {
alert ("The new content: " + event.target.value); }
// Internet Explorer
function OnPropChanged (event) {
if (event.propertyName.toLowerCase () == "value") { alert ("The new content: " + event.srcElement.value); } }
页面结构以下:事件
<input type="text" oninput="OnInput (event)" onpropertychange="OnPropChanged (event)" value="Text field" />
而后调用函数:get
$('textarea').bind('input propertychange', function() {
$('.msg').html($(this).val().length + ' characters');
});