Reputation: 841
I have a month list which shows the months as text but what I want to do is return a numeric number value for each month, so January would return '01', February would return '02' and so on ...
So what I've tried to do is give each option list item a prop (monthNumber) numeric value as well as its text value - here's what my list looks like
<select onChange={this.monthClickHandler.bind(this)}>
<option selected={this.props.monthNumber == '01'}>January</option>
<option selected={this.props.monthNumber == '02'}>February</option>
<option selected={this.props.monthNumber == '03'}>March</option>
<option selected={this.props.monthNumber == '04'}>April</option>
<option selected={this.props.monthNumber == '05'}>May</option>
<option selected={this.props.monthNumber == '06'}>June</option>
<option selected={this.props.monthNumber == '07'}>July</option>
<option selected={this.props.monthNumber == '08'}>August</option>
<option selected={this.props.monthNumber == '09'}>September</option>
<option selected={this.props.monthNumber == '10'}>October</option>
<option selected={this.props.monthNumber == '11'}>November</option>
<option selected={this.props.monthNumber == '12'}>December</option>
</select>
And in the click handler I am trying to return the values as such
monthClickHandler = (event) => {
log.debug('Month - Get the month prop - ', this.props.monthNumber);
log.debug('Month event : ', event);
log.debug('Month value(): target.value', event.target.value);
}
I can get the text value (January etc) but I can't return the monthNumber prop value ... it just returns undefined
Hopefully that all makes sense, is there something I'm missing here? If anyone can point me in the right direction I'd be very grateful!
Upvotes: 0
Views: 62
Reputation: 5740
Add a value
to the option
s, and instead of the selected, add a value
to the select
:
class Months extends React.Component {
handleChange(event) {
console.log(event.target.value);
}
render() {
return (
<select value={this.props.monthNumber} onChange={this.handleChange}>
<option value='01'>January</option>
<option value='02'>February</option>
<option value='03'>March</option>
<option value='04'>April</option>
<option value='05'>May</option>
<option value='06'>June</option>
<option value='07'>July</option>
<option value='08'>August</option>
<option value='09'>September</option>
<option value='10'>October</option>
<option value='11'>November</option>
<option value='12'>December</option>
</select>
);
}
}
ReactDOM.render(React.createElement(Months), document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>
<div id='app' />
then in the handler event.target.value will be that value.
See the React docs
Upvotes: 2