diff --git a/lib/Autocomplete.js b/lib/Autocomplete.js index 65e02ddb..c6ab52b4 100644 --- a/lib/Autocomplete.js +++ b/lib/Autocomplete.js @@ -146,6 +146,7 @@ let Autocomplete = React.createClass({ } else { // text entered + menu item has been highlighted + enter is hit -> update value to that of selected menu item, close the menu + event.preventDefault() var item = this.getFilteredItems()[this.state.highlightedIndex] var value = this.props.getItemValue(item) this.setState({ diff --git a/lib/__tests__/Autocomplete-test.js b/lib/__tests__/Autocomplete-test.js index f35a04fd..f1c49ea7 100644 --- a/lib/__tests__/Autocomplete-test.js +++ b/lib/__tests__/Autocomplete-test.js @@ -211,6 +211,7 @@ describe('Autocomplete kewDown->Enter event handlers', () => { it('should invoke `onSelect` with the selected menu item and close the menu', () => { let value = 'Ar'; + let defaultPrevented = false; autocompleteWrapper.setState({'isOpen': true}); autocompleteInputWrapper.simulate('focus'); autocompleteWrapper.setProps({ value, onSelect(v) { value = v; } }); @@ -219,9 +220,10 @@ describe('Autocomplete kewDown->Enter event handlers', () => { autocompleteInputWrapper.simulate('keyUp', { key : 'r', keyCode: 82, which: 82 }); // Hit enter, updating state.value with the selected Autocomplete suggestion - autocompleteInputWrapper.simulate('keyDown', { key : 'Enter', keyCode: 13, which: 13 }); + autocompleteInputWrapper.simulate('keyDown', { key : 'Enter', keyCode: 13, which: 13, preventDefault() { defaultPrevented = true; } }); expect(value).to.equal('Arizona'); expect(autocompleteWrapper.state('isOpen')).to.be.false; + expect(defaultPrevented).to.be.true; });