117 lines
5.6 KiB
React
Raw Normal View History

2023-12-17 19:27:47 +04:00
import { useState } from 'react';
import { Button, Form } from 'react-bootstrap';
2023-12-14 21:42:39 +04:00
const Page3 = () => {
2023-12-17 19:27:47 +04:00
const someValue = 'Некоторое значение';
const [validated, setValidated] = useState(false);
const [formData, setFormData] = useState({
lastname: '',
firstname: '',
email: '',
password: '',
date: '',
disabled: someValue,
readonly: someValue,
color: '#ff0055',
checkbox1: false,
checkbox2: false,
radio1: false,
radio2: false,
selected: '',
});
const handleSubmit = (event) => {
const form = event.currentTarget;
event.preventDefault();
event.stopPropagation();
if (form.checkValidity() !== false) {
console.log(formData);
}
setValidated(true);
};
2023-12-14 21:42:39 +04:00
2023-12-17 19:27:47 +04:00
const handleChange = (event) => {
const inputName = event.target.name;
const inputValue = event.target.type === 'checkbox' ? event.target.checked : event.target.value;
setFormData({
...formData,
[inputName]: inputValue,
});
};
return (
<div className='row justify-content-center'>
<Form className='col-md-6 m-0' noValidate validated={validated} onSubmit={handleSubmit}>
<Form.Group className='mb-2' controlId='lastname'>
<Form.Label>Фамилия</Form.Label>
<Form.Control type='text' name='lastname' required
value={formData.lastname} onChange={handleChange} />
<Form.Control.Feedback>Фамилия заполнена</Form.Control.Feedback>
<Form.Control.Feedback type='invalid'>Фамилия не заполнена</Form.Control.Feedback>
</Form.Group>
<Form.Group className='mb-2' controlId='firstname'>
<Form.Label>Имя</Form.Label>
<Form.Control type='text' name='firstname' required
value={formData.firstname} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2' controlId='email'>
<Form.Label>E-mail</Form.Label>
<Form.Control type='email' name='email' placeholder='name@example.ru' required
value={formData.email} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2' controlId='password'>
<Form.Label>Пароль</Form.Label>
<Form.Control type='password' name='password' required
value={formData.password} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2' controlId='date'>
<Form.Label>Дата</Form.Label>
<Form.Control type='date' name='date' required
value={formData.date} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2' controlId='disabled'>
<Form.Label>Выключенный компонент</Form.Label>
<Form.Control type='text' name='disabled' disabled
value={formData.disabled} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2' controlId='readonly'>
<Form.Label>Компонент только для чтения</Form.Label>
<Form.Control type='text' name='readonly' readOnly
value={formData.readonly} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2' controlId='color'>
<Form.Label>Выбор цвета</Form.Label>
<Form.Control type='color' name='color'
value={formData.color} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2 d-md-flex flex-md-row'>
<Form.Check className='me-md-3' type='checkbox' name='checkbox1' label='Флажок 1'
value={formData.checkbox1} onChange={handleChange} />
<Form.Check className='me-md-3' type='checkbox' name='checkbox2' label='Флажок 2'
value={formData.checkbox2} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2 d-md-flex flex-md-row'>
<Form.Check className='me-md-3' type='radio' name='radio1' label='Переключатель 1'
value={formData.radio1} onChange={handleChange} />
<Form.Check className='me-md-3' type='switch' name='radio2' label='Переключатель 2'
value={formData.radio2} onChange={handleChange} />
</Form.Group>
<Form.Group className='mb-2'>
<Form.Select name='selected' required
value={formData.selected} onChange={handleChange}>
<option value=''>Выберите значение</option>
<option value='1'>Один</option>
<option value='2'>Два</option>
<option value='3'>Три</option>
</Form.Select>
</Form.Group>
<div className='text-center'>
<Button className='w-50' variant='primary' type='submit'>Отправить</Button>
</div>
</Form>
</div>
2023-12-14 21:42:39 +04:00
);
};
export default Page3;