From 0c534644bc1908fad4e8df5754d3ec224bc7ed7e Mon Sep 17 00:00:00 2001 From: bartes Date: Fri, 18 Nov 2011 20:10:04 +0100 Subject: fix(input): bind inputs to the 'input' event The input event is fired on all non-ie browsers whenever the contents of an input field changes. This means that we now support cut&paste via mouse which was previously unsupported. IE8 and older don't support this events and IE9 has a problematic support for it, so we can't rely solely on this event and drop keydown and change events. --- src/widget/input.js | 2 +- test/widget/inputSpec.js | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/widget/input.js b/src/widget/input.js index 3f25f09f..a744e567 100644 --- a/src/widget/input.js +++ b/src/widget/input.js @@ -817,7 +817,7 @@ angularWidget('input', function(inputElement){ inputElement.val(widget.$viewValue || ''); }; - inputElement.bind('keydown change', function(event){ + inputElement.bind('keydown change input', function(event) { var key = event.keyCode; if (/*command*/ key != 91 && /*modifiers*/ !(15 < key && key < 19) && diff --git a/test/widget/inputSpec.js b/test/widget/inputSpec.js index dfbc506a..e8b0a420 100644 --- a/test/widget/inputSpec.js +++ b/test/widget/inputSpec.js @@ -112,7 +112,7 @@ describe('widget: input', function() { describe("input", function() { describe("text", function() { - it('should input-text auto init and handle keydown/change events', function() { + it('should input-text auto init and listen on keydown/change/input events', function() { compile(''); scope.name = 'Adam'; @@ -130,6 +130,13 @@ describe('widget: input', function() { browserTrigger(element, 'change'); defer.flush(); expect(scope.name).toEqual('Kai'); + + if (!(msie<=8)) { + element.val('Lunar'); + browserTrigger(element, 'input'); + defer.flush(); + expect(scope.name).toEqual('Lunar'); + } }); -- cgit v1.2.3