I need to clear the selected value of select dropdown as soon as user focus on the select element. I have used the below code but cant figure out what property of select do I need to reset.
<select name="select1" onChange={this.onChangeOption} onFocus={this.handleFocus}>
<option value=''>Please select...</option>
<option value='A'>A</option>
<option value='B'>B</option>
<option value='C'>C</option>
<option value='D'>D</option>
</select>
handleFocus(event) {
event.target.select(); // it did not work!!
}
I want the selected value to be Please select...
when the user focuses on the element.
One of the problems with your select element is that it's neither a controlled or an uncontrolled input element. What you want to achieve can be done with both methods, and it looks like you attempted to make a controlled component.
I'll provide a solution for both:
<select>
elementYou need to turn your select element into a controlled component by assigning it a value which is controlled by the state. Then, make your handleFocus
function reset that state variable.
For example:
class MyApp extends React.Component {
constructor() {
super();
this.state = {select: ''};
}
onChangeOption = (event) => {
this.setState({select: event.target.value});
}
handleFocus = (event) => {
this.setState({select: ''});
}
render() {
return (
<select name="select1" value={this.state.select} onChange={this.onChangeOption} onFocus={this.handleFocus}>
<option value=''>Please select...</option>
<option value='A'>A</option>
<option value='B'>B</option>
<option value='C'>C</option>
<option value='D'>D</option>
</select>
);
}
}
ReactDOM.render(<MyApp />, document.getElementById("app"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
<select>
elementIf you want to let the DOM manage the select element you could do the following to clear the value whenever the focus
event is fired.
class MyApp extends React.Component {
handleFocus = (event) => {
event.target.value = '';
}
render() {
return (
<select name="select1" onFocus={this.handleFocus}>
<option value=''>Please select...</option>
<option value='A'>A</option>
<option value='B'>B</option>
<option value='C'>C</option>
<option value='D'>D</option>
</select>
);
}
}
ReactDOM.render(<MyApp />, document.getElementById("app"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>