JSFiddle - React, Tailwind, and code Playground
by Suryar Praveen
JavaScript
(function(factory) {
if (typeof define === "function" && define.amd) {
define(["jquery", "./jquery.validate"], factory)
} else if (typeof module === "object" && module.exports) {
module.exports = factory(require("jquery"))
} else {
factory(jQuery)
}
}(function($) {
(function() {
function stripHtml(value) {
return value.replace(/<.[^<>]*?>/g, " ").replace(/ | /gi, " ").replace(/[.(),;:!?%#$'\"_+=\/\-���]*/g, "")
}
$.validator.addMethod("maxWords", function(value, element, params) {
return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length <= params
}, $.validator.format("Please enter {0} words or less."));
$.validator.addMethod("minWords", function(value, element, params) {
return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params
}, $.validator.format("Please enter at least {0} words."));
$.validator.addMethod("rangeWords", function(value, element, params) {
var valueStripped = stripHtml(value),
regex = /\b\w+\b/g;
return this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1]
}, $.validator.format("Please enter between {0} and {1} words."))
}());
$.validator.addMethod("accept", function(value, element, param) {
var typeParam = typeof param === "string" ? param.replace(/\s/g, "") : "image/*",
optionalValue = this.optional(element),
i, file, regex;
if (optionalValue) {
return optionalValue
}
if ($(element).attr("type") === "file") {
typeParam = typeParam.replace(/[\-\[\]\/\{\}\(\)\+\?\.\\\^\$\|]/g, "\\$&").replace(/,/g, "|").replace(/\/\*/g, "/.*");
if (element.files && element.files.length) {
regex = new RegExp(".?(" + typeParam + ")$", "i");
for (i = 0; i < element.files.length; i++) {
file = element.files[i];
if (!file.type.match(regex)) {
return !1
...