From a090400f09d7993d102f527609879cdc74abae60 Mon Sep 17 00:00:00 2001 From: Tobias Bosch Date: Fri, 22 Nov 2013 16:34:33 -0800 Subject: fix(input): Support form auto complete on modern browser Although modern browser support the "input" event, they still only fire the "change" event when they auto complete form elements other than the currently selected one. Related to #1460 --- test/ng/directive/inputSpec.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'test') diff --git a/test/ng/directive/inputSpec.js b/test/ng/directive/inputSpec.js index c6f5558a..892c1b7f 100644 --- a/test/ng/directive/inputSpec.js +++ b/test/ng/directive/inputSpec.js @@ -468,6 +468,32 @@ describe('input', function() { expect(scope.name).toEqual('adam'); }); + describe('"change" event', function() { + function assertBrowserSupportsChangeEvent(inputEventSupported) { + // Force browser to report a lack of an 'input' event + $sniffer.hasEvent = function(eventName) { + if (eventName === 'input' && !inputEventSupported) { + return false; + } + return true; + }; + compileInput(''); + + inputElm.val('mark'); + browserTrigger(inputElm, 'change'); + expect(scope.name).toEqual('mark'); + } + + it('should update the model event if the browser does not support the "input" event',function() { + assertBrowserSupportsChangeEvent(false); + }); + + it('should update the model event if the browser supports the "input" ' + + 'event so that form auto complete works',function() { + assertBrowserSupportsChangeEvent(true); + }); + }); + describe('"paste" and "cut" events', function() { beforeEach(function() { // Force browser to report a lack of an 'input' event -- cgit v1.2.3