I want to console.log an array of the checkboxes that are checked. Like if checkbox 1, 2, and 5 are checked, I want it to show in the console as an array of each checkbox's value. I can get the last value selected to show up in the console, but I can't get an array of all the checkboxes checked to show up. They just show up separate.
import { CheckboxData } from "../../../Data/SurveyData";
class CheckboxForm extends Component {
constructor(props) {
super(props);
this.state = { value: [] };
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) {
this.setState({ value: event.target.value });
console.log("Checkbox: ", event.target.value);
}
handleSubmit(event) {
event.preventDefault();
}
render() {
return (
<div
id="checkboxContainer"
className="container"
onSubmit={this.handleSubmit}
>
{CheckboxData.map((data, key) => {
return (
<div key={key}>
<h5>{data.question}</h5>
<div className="form-check">
<input
className="form-check-input "
required={data.required}
name={data.name}
type={data.type}
value={data.options[0].value}
id={`${data.options[0].name}-${key}`}
onChange={this.handleChange}
/>
<label
className="form-check-label "
htmlFor={`${data.name}-${key}`}
>
{data.options[0].label}
</label>
</div>
<div className="form-check">
<input
className="form-check-input "
required={data.required}
name={data.name}
type={data.type}
value={data.options[1].value}
id={`${data.options[1].name}-${key}`}
onChange={this.handleChange}
/>
<label
className="form-check-label "
htmlFor={`${data.name}-${key}`}
>
{data.options[1].label}
</label>
</div>
<div className="form-check">
<input
className="form-check-input "
required={data.required}
name={data.name}
type={data.type}
value={data.options[2].value}
id={`${data.options[2].name}-${key}`}
onChange={this.handleChange}
/>
<label
className="form-check-label "
htmlFor={`${data.name}-${key}`}
>
{data.options[2].label}
</label>
</div>
<div className="form-check">
<input
className="form-check-input "
required={data.required}
name={data.name}
type={data.type}
value={data.options[3].value}
id={`${data.options[3].name}-${key}`}
onChange={this.handleChange}
/>
<label
className="form-check-label "
htmlFor={`${data.name}-${key}`}
>
{data.options[3].label}
</label>
</div>
<div className="form-check">
<input
className="form-check-input "
required={data.required}
name={data.name}
type={data.type}
value={data.options[4].value}
id={`${data.options[4].name}-${key}`}
onChange={this.handleChange}
/>
<label
className="form-check-label "
htmlFor={`${data.name}-${key}`}
>
{data.options[4].label}
</label>
</div>
</div>
);
})}
</div>
);
}
}
export default CheckboxForm;
The data is in the SurveyData.js file as follows:
{
page: 2,
name: "checkbox",
question: "Check all that apply. I understand:",
type: "checkbox",
options: [
{
name: "checkbox1",
value: "I am entering into a new contract.",
label: "I am entering into a new contract.",
},
{
name: "checkbox2",
value:
"I will be responsible for $49.95 each month until my contract is over.",
label:
"I will be responsible for $49.95 each month until my contract is over.",
},
{
name: "checkbox3",
value: "I have three days to cancel.",
label: "I have three days to cancel.",
},
{
name: "checkbox4",
value:
"If I cancel after three days, I will be responsible for the remainder of the contract.",
label:
"If I cancel after three days, I will be responsible for the remainder of the contract.",
},
{
name: "checkbox5",
value:
"My system is monitored and if it is set off, the cops will come to my home.",
label:
"My system is monitored and if it is set off, the cops will come to my home.",
},
],
},
];```
Aucun commentaire:
Enregistrer un commentaire