JSFiddle - React, Tailwind, and code Playground

by Minko Gechev

HTML

<form novalidate>
    <label for="email">Email</label><input type="email"/>
    <input type="submit" value="Send" />
</form>

JavaScript

var input = $('input[type="email"]');

function sendForm() {
    return $.post('http://google.bg/', { email: input.val() }).always(function () {
        console.log(arguments);
    });
}

function validate() {
    var d = $.Deferred();
    if (!(/[^@]+@[^.]+\.[a-z.]+/).test(input.val())) {
        d.reject('Invalid email');
    } else {
        d.resolve();
    }
    return d.promise();
}

$('form').submit(function (e) {
    validate().then(function () {
        return sendForm();
    }).done(function () {
        alert('Success');
    }).fail(function (error) {
        alert('Fail ' + JSON.stringify(error));
    });
    return e.preventDefault();
});