JSFiddle - React, Tailwind, and code Playground

by John Grivas

HTML

<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.0/jquery.validate.js"></script>
<div id="main">
    <form class="cmxform" id="texttests" method="get" action="foo.html">
        	<h2 id="summary"></h2>

        <fieldset>
            <legend>Example with custom methods and heavily customized error display</legend>
            <table>
                <tr>
                    <td>
                        <label for="name">Your Name</label>
                    </td>
                    <td>
                        <input id="number" name="name" title="Please tell me your name." />
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <label for="email">Email</label>
                    </td>
                    <td>
                        <input name="email" title="Please tell me your email address" id="email" />
                    </td>
                    <td></td>
                </tr>
                <tr>
                    <td>
                        <label for="message">Message</label>
                    </td>
                    <td>
                        <textarea id="message" rows="10" name="message" title="Please leave me a message." maxlength="500" tabindex="3" ></textarea>
                    </td>
                    <td></td>
                </tr>
            </table>
            <input class="submit" type="submit" value="Submit" />
        </fieldset>
    </form>
    	<h3 id="warning">Your form contains tons of errors! Please try again.</h3>

</div>

CSS

form.cmxform {
	    width: 50em;
	}
	em.error {
	    background:url("images/unchecked.gif") no-repeat 0px 0px;
	    padding-left: 16px;
	}
	em.success {
	    background:url("images/checked.gif") no-repeat 0px 0px;
	    padding-left: 16px;
	}
	form.cmxform label.error {
	    margin-left: auto;
	    width: 250px;
	}
	em.error {
	    color: black;
	}
	#warning {
	    display: none;
	}

JavaScript

// extend the current rules with new groovy ones

	// this one requires the text "buga", we define a default message, too
	$.validator.addMethod("buga", function (value) {
	    return value == "buga";
	}, 'Please enter "buga"!');

	// this one requires the value to be the same as the first parameter
	$.validator.methods.equal = function (value, element, param) {
	    return value == param;
	};

	$().ready(function () {
	    var validator = $("#texttests").bind("invalid-form.validate", function () {
	        $("#summary").html("Your form contains " + validator.numberOfInvalids() + " errors, see details below.");
	    }).validate({
	        debug: true,
	        errorElement: "em",
	        errorContainer: $("#warning, #summary"),
	        errorPlacement: function (error, element) {
	            error.appendTo(element.parent("td").next("td"));
	        },
	        success: function (label) {
	            label.text("ok!").addClass("success");
	        },
	        rules: {
	            email: {
	                required: true,
	                minlength: 3,
	                maxlength: 15,
	                number: true
	            },
	            message: "buga",
	            name: {
	                equal: 11
	            }
	        },
	        });

	    });