<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Бронирование книги</title>
</head>
<body>
<h2>Форма бронирования книги</h2>
<form id="bookingForm">
<label for="readerName">ФИО Читателя:</label><br>
<input type="text" id="readerName" name="readerName" minlength="5" maxlength="100" required><br><br>
<label for="bookId">ID Книги:</label><br>
<input type="text" id="bookId" name="bookId" minlength="2" maxlength="20" required><br><br>
<label for="email">Email:</label><br>
<input type="email" id="email" name="email" required><br><br>
<label for="days">Количество дней (от 1 до 30):</label><br>
<input type="number" id="days" name="days" min="1" max="30" step="1" required><br><br>
<button type="submit">Забронировать</button>
</form>
<script>
document.getElementById('bookingForm').addEventListener('submit', function(event) {
event.preventDefault();
const readerName = document.getElementById('readerName').value.trim().replace(/\s+/g, ' ');
const bookId = document.getElementById('bookId').value.trim();
const email = document.getElementById('email').value.trim();
const daysRaw = document.getElementById('days').value.trim();
const days = Number(daysRaw);
if (!readerName || !bookId || !email || !daysRaw) {
alert("Ошибка: Все поля обязательны для заполнения!");
return;
}
const nameRegex = /^[А-ЯЁа-яёA-Za-z\-]+(\s+[А-ЯЁа-яёA-Za-z\-]+)+$/;
if (readerName.length < 5 || !nameRegex.test(readerName)) {
alert("Ошибка: Введите корректное ФИО читателя (только буквы, минимум Фамилия и Имя)!");
return;
}
const bookIdRegex = /^[A-Za-zА-ЯЁа-яё0-9\-]{2,20}$/;
if (!bookIdRegex.test(bookId)) {
alert("Ошибка: Некорректный ID книги (допустимы буквы, цифры и дефис, от 2 до 20 символов)!");
return;
}
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/;
if (!emailRegex.test(email)) {
alert("Ошибка: Введите корректный адрес электронной почты!");
return;
}
if (!Number.isInteger(days) || days < 1 || days > 30) {
alert("Ошибка: Количество дней должно быть целым числом от 1 до 30!");
return;
}
console.log("Данные отправлены на сервер!", { readerName, bookId, email, days });
alert("Успешно забронировано!");
this.reset();
});
</script>
</body>
</html>