JSFiddle - React, Tailwind, and code Playground
by joplomacedo
HTML
<form>
<input id="pw" />
<input id="confirm_pw" />
<input id="email" />
<button>submit</button>
<span class="resetBtn">RESET</span>
</form>
JavaScript
var happy = {
USPhone: function (val) {
return /^\(?(\d{3})\)?[\- ]?\d{3}[\- ]?\d{4}$/.test(val);
},
// matches mm/dd/yyyy (requires leading 0's (which may be a bit silly, what do you think?)
date: function (val) {
return /^(?:0[1-9]|1[0-2])\/(?:0[1-9]|[12][0-9]|3[01])\/(?:\d{4})/.test(val);
},
email: function (val) {
return /^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/.test(val);
},
minLength: function (val, length) {
return val.length >= length;
},
maxLength: function (val, length) {
return val.length <= length;
},
equal: function (val1, val2) {
return (val1 == val2);
}
};
(function($){
function trim(el) {
return (''.trim) ? el.val().trim() : $.trim(el.val());
}
$.fn.isHappy = function (config) {
var fields = [], item;
function getError(error) {
return $('<span id="'+error.id+'" class="unhappyMessage">'+error.message+'</span>');
}
function handleSubmit() {
var errors = false, i, l;
for (i = 0, l = fields.length; i < l; i += 1) {
if (!fields[i].testValid(true)) {
errors = true;
}
}
if (errors) {
if (isFunction(config.unHappy)) config.unHappy();
return false;
} else if (config.testMode) {
if (window.console) console.warn('would have submitted');
return false;
}
}
function isFunction (obj) {
return !!(obj && obj.constructor && obj.call && obj.apply);
}
function processField(opts, selector) {
var field = $(selector),
error = {
message: opts.message,
id: selector.slice(1) + '_unhappy'
},
errorEl = $(error.id).length > 0 ? $(error.id) : getError(error);
fields.push(field);
field.testValid = function (submit) {
var val,
el = $(this),
gotFunc,
error = false,
temp,
required = !!el.get(0).attributes.getNamedItem('required') ||...