Загрузка данных


<!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>