Показать сообщение отдельно
  #7 (permalink)  
Старый 27.09.2023, 15:55
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Ну что то типа такого
let formSendBtn = document.querySelectorAll('.formSend');
    for (let btn of formSendBtn) {
        btn.addEventListener('click', async () => {
            let message = `<h1>Вам письмо, тема "${btn.dataset.form}"</h1>`;
            let form = btn.closest('form');
            let fileds = form.querySelectorAll('input[data-field], select[data-field]');
            if(!form.reportValidity()) {
                return;
            }
            for (let field of fileds) {
                let valid = field.validity.valid;
                if (field.type !== 'file' && field.type !== 'email') {
                    if (field.type == 'checkbox') {
                        message += `<p><b>${field.dataset.field} :</b> ${(field.checked?'Да':'Нет')}</p>`;
                    }else{
                        message += `<p><b>${field.dataset.field} :</b> ${field.value}</p>`;
                    }
                }
            };
             
            try {
                let data = new FormData();
                const fileInput = form.querySelector('input[data-field][type="file"]');
                if (fileInput) {
                    const fileInputFiles = fileInput.files;
                    for (var i = 0; i < fileInputFiles.length; i++) {
                        var file = fileInputFiles[i];
                        // Add the file to the request.
                        data.append('files[]', file, file.name);
                    }
                }
                const emailInput = form.querySelector('input[data-field][type="email"]');
                if (emailInput) {
					data.append('mail', emailInput.value);
                }
                 
                 
                data.append('message', message);

Последний раз редактировалось voraa, 27.09.2023 в 16:08.
Ответить с цитированием