Утверждение формуляра с Javascript

Я нуждаюсь в том, чтобы решить проблему, у меня есть очень простой формуляр, который я хочу послать из-за mail через услугу EmailJS. Для этого я поместил ему один onclick в кнопку enviar формуляра с функцией Javascript send(). Далее я оставляю им код Javascript:

//Guardo los valores del formulario en variables
var name = document.getElementById('name').value;
var subject = document.getElementById('subject').value;
var email = document.getElementById('email').value;
var message = document.getElementById('message').value;

// Esta es la funcion que inicia el servicio EmailJS
(function(){
    emailjs.init("user_Hit3AKxYC1qvLfRZm2mBo");
})();

// Mi funcion para realizar la validacion y el envio del formulario
var send = function() {
    if (name !== "" && subject !== "" && email !== "" && message !== "") {
        // Esta funcion es la que envía el formulario por EmailJS
        emailjs.sendForm('gmail','contact_form','contact-form');
        document.getElementById('contact-form').reset();
        alert("Your message was sent successfully.");
    } else {
        alert('You must fill in all fields');
    }
};

И здесь HTML form:

    <form name="contact-form" id="contact-form" class="form col-md-8 col-center" method="post">
        <input type="text" name="name" id="name" placeholder="Name" required>
        <input type="text" name="subject" placeholder="Subject" id="subject" required>
        <input type="email" name="email" id="email" placeholder="E-mail" required>
        <textarea name="message" placeholder="Message" id="message" required></textarea>
        <div class="submit"> 
            <input type="submit" onclick="send()" name="submit" value="Send">
        </div>
    </form>

Утверждение, к которому я стремлюсь, просто проконтролируйте, что были все поля с действительной информацией.

С этим кодом всегда он возвращает меня false и он не посылает мне формуляр. Это тема if, но я не понимаю, где ошибка.

3
задан 13.01.2017, 20:15
0 ответов

Смоги быть проблемой во время выполнения.

Я представляю, что твой код Javascript находится в файле js. Если ты загружаешь этот файл js в <head></head> возможно, что, когда ты призываешь заявления name, subject, email, message случитесь до того, как браузер был renderizado страница.

У тебя есть несколько выборов:

  • Загружать файл js событием onload в body.

  • Перемещать заявление переменных внутри функции, я схватил:

// Esta es la funcion que inicia el servicio EmailJS
(function(){
    emailjs.init("user_Hit3AKxYC1qvLfRZm2mBo");
})();

// Mi funcion para realizar la validacion y el envio del formulario
var send = function() {

    //Guardo los valores del formulario en variables
    var name = document.getElementById('name').value;
    var subject = document.getElementById('subject').value;
    var email = document.getElementById('email').value;
    var message = document.getElementById('message').value;

    if (name !== "" && subject !== "" && email !== "" && message !== "") {
        // Esta funcion es la que envía el formulario por EmailJS
        emailjs.sendForm('gmail','contact_form','contact-form');
        document.getElementById('contact-form').reset();
        alert("Your message was sent successfully.");
    } else {
        alert('You must fill in all fields');
    }
};
2
ответ дан 03.12.2019, 17:41

Я думаю, что проблема состоит в том, что ты загружаешь следующую стоимость, когда загружается страница, и в этом моменте поля пустые.

var name = document.getElementById('name').value;

Потом, когда ejecutás функция, чтобы посылать mail, validás пустые поля.

Нечто похожее было бы должно функционировать:

//Esta es la función que inicia el servicio EmailJS
(function(){
    emailjs.init("user_Hit3AKxYC1qvLfRZm2mBo");
})();

//Mi función para realizar la validación y el envío del formulario
var send = function() {

    //Guardo los valores del formulario en variables
    var name = document.getElementById('name').value;
    var subject = document.getElementById('subject').value;
    var email = document.getElementById('email').value;
    var message = document.getElementById('message').value;
    if (name !== "" && subject !== "" && email !== "" && message !== "") {
        // Esta funcion es la que envía el formulario por EmailJS
        emailjs.sendForm('gmail','contact_form','contact-form');
        document.getElementById('contact-form').reset();
        alert("Your message was sent successfully.");
    } else {
        alert('You must fill in all fields');
    }
};
2
ответ дан 03.12.2019, 17:41

Теги

Похожие вопросы