mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-24 03:55:49 +08:00
fix(input): don't dirty model when input event triggered due to placeholder change
Certain versions of IE inexplicably trigger an input event in response to a placeholder being set. It is not possible to sniff for this behaviour nicely as the event is not triggered if the element is not attached to the document, and the event triggers asynchronously so it is not possible to accomplish this without deferring DOM compilation and slowing down load times. Closes #2614 Closes #5960
This commit is contained in:
@@ -520,6 +520,23 @@ describe('input', function() {
|
||||
}
|
||||
});
|
||||
|
||||
it('should not dirty the model on an input event in response to a placeholder change', inject(function($sniffer) {
|
||||
if (msie && $sniffer.hasEvent('input')) {
|
||||
compileInput('<input type="text" ng-model="name" name="name" />');
|
||||
inputElm.attr('placeholder', 'Test');
|
||||
browserTrigger(inputElm, 'input');
|
||||
|
||||
expect(inputElm.attr('placeholder')).toBe('Test');
|
||||
expect(inputElm).toBePristine();
|
||||
|
||||
inputElm.attr('placeholder', 'Test Again');
|
||||
browserTrigger(inputElm, 'input');
|
||||
|
||||
expect(inputElm.attr('placeholder')).toBe('Test Again');
|
||||
expect(inputElm).toBePristine();
|
||||
}
|
||||
}));
|
||||
|
||||
describe('"change" event', function() {
|
||||
function assertBrowserSupportsChangeEvent(inputEventSupported) {
|
||||
// Force browser to report a lack of an 'input' event
|
||||
|
||||
Reference in New Issue
Block a user