{"version":3,"file":"formInput.min.js","sources":["scripts/formInput.min.js"],"sourcesContent":["/**************************************************************************\r\nName: formInput.js\r\nDescription: Site scripting for instant feed of forms.\r\nDate Created: 10/20/2015; Nick Guidry\r\n\r\n**************************************************************************/\r\n\r\nfunction formInput(options){\r\n\tthis.config = {\r\n\t\tformID : '',\r\n\t\tformURL : '/',\r\n\t\thoneypot : '',\r\n\t\tsubmitButtonSelector : '.formSubmit',\r\n\t\tresetButtonSelector : '',\r\n\t\tajaxSuccess : function(response, self){\r\n\t\t\t/* Responds to the ajax request */\r\n\t\t\tif(response.success){\r\n\t\t\t\t$(self.config.formSubmitBtn).addClass('disabled');\r\n\t\t\t\tself.resetForm();\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tself.handleErrors(response.errors);\r\n\t\t\t\t$(self.config.formSubmitBtn).removeClass('disabled');\r\n\t\t\t}\r\n\t\t},\r\n\t\tajaxError : function(error, self){\r\n\t\t\t$(self.config.formSubmitBtn).removeClass('disabled');\r\n\t\t},\r\n\t\tpreAjaxFunction : function(){ return; },\r\n\t\tvalidSubmitHTML : null,\r\n\t\tinvalidSubmitHTML : null,\r\n\t\tformSubmitBtn : '',\r\n\t\tformResetBtn : '',\r\n\t\tcheckMark : '',\r\n\t\tuseAjax: true,\r\n\t\tallowSubmitWithError: false\r\n\t};\r\n\r\n\tthis.validateInput = function(el){\r\n\t\t/* Validates a single form input */\r\n\t\tvar returnStr = {\r\n\t\t\t\t\"valid\" : true,\r\n\t\t\t\t\"msg\" : \"\",\r\n\t\t\t\t\"showOnKeyUp\": false\r\n\t\t\t};\r\n\t\tswitch(el.attr('data-type')){\r\n\t\t\tcase 'email':\r\n\t\t\t\tif(!this.validateEmail(el.val())){\r\n\t\t\t\t\treturnStr.valid = false;\r\n\t \t\t\t\treturnStr.msg = \"That email is not valid.\";\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'text':\r\n\t\t\t\tif(!this.validateText(el.val())){\r\n\t\t\t\t\treturnStr.valid = false;\r\n\t\t\t\t\treturnStr.showOnKeyUp = true;\r\n\t\t\t \t\tif (el.attr('data-msg-len') == \"lg\"){\r\n\t \t\t\t\t\treturnStr.msg = \"Sorry, I only accept alphanumeric characters—it's a security thing.\";\r\n\t\t\t \t\t}\r\n\t\t\t \t\telse{\r\n\t \t\t\t\t\treturnStr.msg = \"Oops! I didn't like that character.\";\r\n\t\t\t \t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'phone':\r\n\t\t\t\tif(!this.validatePhone(el.val())){\r\n\t\t\t\t\treturnStr.valid = false;\r\n\t \t\t\t\treturnStr.msg = \"That phone is not valid.\";\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'idselect':\r\n\t\t\t\tif (el.val() == 0){\r\n\t\t\t\t\treturnStr.valid = false;\r\n\t\t\t\t\tif( el.attr('data-required') == 'true'){\r\n\t\t\t\t\t\treturnStr.msg = \"Oops!\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse{\r\n\t\t\t\t\t\treturnStr.msg = \"\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'radio':\r\n\t\t\t\tif(jQuery(el).find(\"input[type='radio']:checked\").length === 0){\r\n\t\t\t\t\treturnStr.valid = false;\r\n\t \t\t\t\treturnStr.msg = \"\";\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'checkbox':\r\n\t\t\t\tif (!$(el).find(\"input[type='checkbox']:checked\").length){\r\n\t\t\t\t\treturnStr.valid = false;\r\n\t \t\t\t\treturnStr.msg = \"Check at least one box\";\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(el.is(\"input\") || el.is(\"textarea\") || el.is(\"select\")){\t//Only check that the element has a value if it can contain one\r\n\t\t\tif( el.attr('data-required') == 'true' && el.val() == ''){\r\n\t\t\t\treturnStr.valid = false;\r\n\t\t\t\treturnStr.showOnKeyUp = false;\r\n\t\t\t\t//Find the label for the element\r\n\t\t\t\tlet label = el.closest(\"label\");\r\n\t\t\t\tif(label.length === 0){\r\n\t\t\t\t\tlabel = jQuery(`${this.config.formID} label[for=\"${el.attr(\"name\")}\"]`);\r\n\t\t\t\t}\r\n\t\t\t\t//Get the label's text\r\n\t\t\t\tlet labelText = \"\";\r\n\t\t\t\tfor(let i=0; i