哥俩好:oninput & onpropertychange

传统对于文本框(input)的输入可通过键盘的 onkeydown / onkeypress / onkeyup 来监测,但在处理较多细节时存在诟病比如: cut(剪切) / paste(复制) / undo(撤销) / redo(重做) / drag & drop(拖拽)/ 输入法等。

而 oninput & onpropertychange 事件基本可以解决上面的诟病:

oninput 事件作为 HTML5 中的标准事件,基本除了IE6 / IE7 / IE8 外的最新浏览器均支持(注:1、原先的 Opera 的虽支持,但依然存在部分传统的诟病,从 Opera 11+ 开始,已修复,更加完美;2、IE9 也支持)。

function(input, callback){     if ("onpropertychange" in input) { //IE6/IE7/IE8         input.onprepertychange = function(){             if (window.event.propertyName == "value"){                 callback.call(this, window.event)             }         }     } else {         // Fix Firefox Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=195696         input.addEventListener("input", callback, false);     } }

提示:

  1. oninput 事件:当 JS 改变 value 值或从浏览器的自动下拉提示中选值时,不会触发。
  2. onpropertychange 事件:当 input 设置为不可用(disable=true)时,不会触发。
转摘自:http://www.kuqin.com/webpagedesign/20111018/313056.html

你可能感兴趣的:(哥俩好:oninput & onpropertychange)