JSFiddle - React, Tailwind, and code Playground

by Marventus

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/jquery.validate.min.js"></script>
<form class="cmxform" id="mainform" method="post" action="">
    <input id="TbxConfirmationNumber" name="TbxConfirmationNumber" type="text" />
    <input id="TbxOrderEmail" name="TbxOrderEmail" type="email" />
    <input id="TbxBillingZip" name="TbxBillingZip" type="text" />
    <input type="submit" val="Submit" />
</form>

CSS

input {
    display: block;
    margin-bottom: 1em;
}
input.inline-error {
    border: 1px solid red;
}
label.inline-error {
    color: red;
}

JavaScript

$(document).ready(function () {
    $.validator.addMethod("zipcode", function (value, element) {
        return this.optional(element) || /[^0-9]+/ig.test(value);
    }, 'Please enter a valid zip code.');

    $("#mainform").validate({
        rules: {
            "TbxConfirmationNumber": {
                maxlength: 16,
                minlength: 12,
                required: true
            },
            "TbxOrderEmail": {
                email: true,
                required: true,
                maxlength: 255
            },
            "TbxBillingZip": {
                maxlength: 5,
                number: true,
                required: true
            }
        },
        messages: {
            "TbxConfirmationNumber": {
                maxlength: "maxlength TbxConfirmationNumber",
                minlength: "minlength TbxConfirmationNumber",
                required: "required TbxConfirmationNumber"
            },
            "TbxOrderEmail": {
                email: "email TbxOrderEmail",
                required: "required TbxOrderEmail",
                maxlength: "maxlength TbxOrderEmail"
            },
            "TbxBillingZip": {
                required: "required TbxBillingZip",
                maxlength: "maxlength TbxBillingZip",
                number: "numericOnly TbxBillingZip",
            }
        },
        onkeyup: false,
        focusCleanup: true,
        errorClass: "inline-error",
        onfocusout: function (element) {
            this.element(element);
        }
    });

    $("#mainform").on("submit.validate", function (evt) {
        var isValid = $(this).valid();
        console.log(isValid);
        if (!isValid) {
            /*$("input").each(function() {
                $(this).trigger("focus").trigger("blur");
            });*/
            evt.preventDefault();
        }
    });
    
});