Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React prevent form submission when enter is pressed inside input

React prevent form submission when enter is pressed

I have the following React Search Bar component where the parent container can call using

<SearchBar onInputChange={this.handleInputChange} /> 

Everytime the user changes the input, the parent container will be notified. This is why my search bar does not need any submit button.

However, I am finding that if I press enter inside my search bar, the whole page refreshes. And I dont want that.

I know if I have a button in the form, I could call event.preventDefault(). But in this case I have no button so I dont know what to do here

class SearchBar extends Component {     constructor(props) {         super(props);         this.state = { value: '' };         this.handleChange = this.handleChange.bind(this)     }      handleChange(e) {         this.setState({ value: e.target.value });         this.props.onInputChange(e.target.value);     }      render() {         return (         <div id="search-bar">             <form>             <FormGroup controlId="formBasicText">                 <FormControl                 type="text"                 onChange={this.handleChange}                 value={this.state.value}                 placeholder="Enter Character Name"                 />                       </FormGroup>             </form>         </div>         );     } }  export default SearchBar 
like image 408
ErnieKev Avatar asked May 03 '17 02:05

ErnieKev


People also ask

How do you stop a form from submission?

The simplest solution to prevent the form submission is to return false on submit event handler defined using the onsubmit property in the HTML <form> element.

What is the purpose of event preventDefault () in form submit handler in React?

The preventDefault() method cancels the event if it is cancelable, meaning that the default action that belongs to the event will not occur. For example, this can be useful when: Clicking on a "Submit" button, prevent it from submitting a form.


1 Answers

You need to create a form handler that would prevent the default form action.

The simplest implementation would be:

<form onSubmit={e => { e.preventDefault(); }}> 

But ideally you create a dedicated handler for that:

<form onSubmit={this.submitHandler}> 

with the following implementation

submitHandler(e) {     e.preventDefault(); } 
like image 56
zerkms Avatar answered Sep 25 '22 12:09

zerkms