diff --git a/src/ng/directive/input.js b/src/ng/directive/input.js index 969d53c634d2..146a6f4aa8f6 100644 --- a/src/ng/directive/input.js +++ b/src/ng/directive/input.js @@ -1126,7 +1126,7 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { }); } - var timeout; + var timeout, oldVal; var listener = function(ev) { if (timeout) { @@ -1152,10 +1152,17 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { } }; + function ieListener(ev) { + var val = element.val(); + if (val === oldVal) return; + oldVal = val; + listener(ev); + } + // if the browser does support "input" event, we are fine - except on IE9 which doesn't fire the // input event on backspace, delete or cut if ($sniffer.hasEvent('input')) { - element.on('input', listener); + element.on('input', msie ? ieListener : listener); } else { var deferListener = function(ev, input, origValue) { if (!timeout) {