Reputation: 1396
I'm using reactstrap to create a form, but I have problem with the radio button because I don't understand how to save the value.
Variable of the form is:
const [formModel, setFormModel] = useState({
name: '',
deletedDate: '',
});
My form is:
<AvForm model={formModel} onSubmit={filterResults} onReset={handleFormReset}>
<h3 className="text-center">Form</h3>
<Row>
<Col md="6">
<AvGroup>
<Label id="name" for="name">
Name
</Label>
<AvField
id="name"
data-cy="name"
type="text"
name="name"
onChange={handleChange}
value={formModel.name}
/>
</AvGroup>
<FormGroup check>
<Label check>
<Input
id="deletedDate"
data-cy="deletedDate"
type="radio"
name="deletedDate"
value="true"
onChange={handleChange}
/>{' '}
Yes
</Label>
</FormGroup>
<FormGroup check>
<Label check>
<Input
id="deletedDate"
data-cy="deletedDate"
type="radio"
name="deletedDate"
value="false"
onChange={handleChange}
/>{' '}
No
</Label>
</FormGroup>
</AvGroup>
My filterResult is:
const filterResults = (event, errors, values) => {
console.log('values ', values);
let entity = null;
if (errors.length === 0) {
entity = {
...values,
};
}
//other code...
const handleChange = e => {
console.log('e ', e);
const { name, value } = e.target;
console.log('name ', name, ' value ', value);
setFormModel(prevState => ({
...prevState,
[name]: value,
}));
};
Now when I submit the form, if I checked the deletedDate radiobutton in the filterResult function I don't have any value about it (but I have the value for the name)
How can I use the radio button in right way to save the value?
Thank you so much
Upvotes: 0
Views: 341
Reputation: 849
The main issue is that you are missing the checked
attribute:
<label>
<input
id="deletedDate"
data-cy="deletedDate"
type="radio"
name="deletedDate"
value="true"
checked={formModel.deletedDate === "true"}
onChange={handleChange}
/>{" "}
Yes
</label>
<label>
<input
id="deletedDate"
data-cy="deletedDate"
type="radio"
name="deletedDate"
value="false"
checked={formModel.deletedDate === "false"}
onChange={handleChange}
/>{" "}
No
</label>
Edit: I have added a submit handler to the sandbox.
Upvotes: 1