Skip to content

Commit bedf5a1

Browse files
jefersonestevotinayuangao
authored andcommitted
fix(autocomplete): do not trigger submit on ENTER (#3727)
* fix(autocomplete): do not trigger submit on ENTER When an option is selected with the ENTER key, it should not submit the form and prevent the default input behavior Fixes #3159 * test(autocomplete): removing extra detectChanges
1 parent 6d6c12d commit bedf5a1

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/lib/autocomplete/autocomplete-trigger.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ export class MdAutocompleteTrigger implements ControlValueAccessor, OnDestroy {
205205
_handleKeydown(event: KeyboardEvent): void {
206206
if (this.activeOption && event.keyCode === ENTER) {
207207
this.activeOption._selectViaInteraction();
208+
event.preventDefault();
208209
} else {
209210
this.autocomplete._keyManager.onKeydown(event);
210211
if (event.keyCode === UP_ARROW || event.keyCode === DOWN_ARROW) {

src/lib/autocomplete/autocomplete.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,20 @@ describe('MdAutocomplete', () => {
631631
});
632632
}));
633633

634+
it('should prevent the default enter key action', async(() => {
635+
fixture.whenStable().then(() => {
636+
fixture.componentInstance.trigger._handleKeydown(DOWN_ARROW_EVENT);
637+
638+
fixture.whenStable().then(() => {
639+
spyOn(ENTER_EVENT, 'preventDefault');
640+
641+
fixture.componentInstance.trigger._handleKeydown(ENTER_EVENT);
642+
643+
expect(ENTER_EVENT.preventDefault).toHaveBeenCalled();
644+
});
645+
});
646+
}));
647+
634648
it('should fill the text field, not select an option, when SPACE is entered', async(() => {
635649
fixture.whenStable().then(() => {
636650
typeInElement('New', input);

0 commit comments

Comments
 (0)