"use strict"; $(function () { function generateInputName() { var name = ""; for (var i = 0; i < 8; i++) { var _int = ModernJs.random(97, 122, "floor"); var _char = String.fromCharCode(_int); name += _char; } return name; } $("body").on("focus", "input[autocomplete=off]", function () { var sep = "--anty-autofill--"; var input = $(this); var name = input.attr("name") || ""; var isFlexdatalist = input.is(".flexdatalist-alias"); if (isFlexdatalist) { name = name.replace('flexdatalist-', ''); } var nameAttr = "".concat(generateInputName()).concat(sep).concat(name); if (name.indexOf(sep) == -1) { input.attr("name", nameAttr); if (isFlexdatalist) { input.attr("name", "flexdatalist-".concat(nameAttr)); } input.attr("autocomplete", nameAttr); if (isFlexdatalist) { var inputIn = input.prev(".flexdatalist[name=".concat(name, "]")); inputIn.attr("name", nameAttr); inputIn.attr("autocomplete", nameAttr); } } }); if (!FileReader.prototype.readAsBinaryString) { FileReader.prototype.readAsBinaryString = function (fileData) { var binary = ""; var pt = this; var reader = new FileReader(); reader.onload = function (e) { var bytes = new Uint8Array(reader.result); var length = bytes.byteLength; for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); } pt.content = binary; $(pt).triggerHandler('onload'); }; reader.readAsArrayBuffer(fileData); }; } $.ajaxSetup({ cache: false, xhrFields: { withCredentials: true } }); if (!ModernJs.isDefined(ModernJs.AjaxForm)) { ModernJs.AjaxForm = {}; ModernJs.AjaxForm.responseDone = function () {}; ModernJs.AjaxForm.responseParser = function (obj) { return obj; }; ModernJs.AjaxForm.prereader = function (file, data) { return file; }; ModernJs.AjaxForm.config = function (form, config) { if (arguments.length < 2) { config = form; if (ModernJs.isDefined(config.done)) { ModernJs.AjaxForm.responseDone = config.done; } if (ModernJs.isDefined(config.parser)) { ModernJs.AjaxForm.responseParser = config.parser; } if (ModernJs.isDefined(config.prereader)) { ModernJs.AjaxForm.prereader = config.prereader; } } else { if (ModernJs.isDefined(config.done)) { form.data("AjaxFormDone", config.done); } if (ModernJs.isDefined(config.parser)) { form.data("AjaxFormParser", config.parser); } if (ModernJs.isDefined(config.prereader)) { form.data("AjaxFormPrereader", config.prereader); } } }; ModernJs.AjaxForm.readInput = function (data, form, input, count, callback) { var nameParts = input.attr("name").split("--anty-autofill--"); var name = nameParts.pop(); var preName = nameParts[0] || ""; if (input.is("[type=file]")) { var files = input.prop('files') || fileInput[0].files; var reader = new FileReader(); var prereader = form.data("AjaxFormPrereader") || ModernJs.AjaxForm.prereader; if (ModernJs.isDefined(files[0])) { var file = prereader(files[0], data); reader.readAsBinaryString(file); reader.onload = function () { data[name] = { name: file.name, data: reader.result }; count.value++; callback(); }; } else { count.value++; callback(); } return; } if (!preName.includes("flexdatalist")) { var value = input.val(); data[name] = value; } count.value++; }; ModernJs.AjaxForm.submitAsync = function (data, parser, done, form, count, inputsNumber) { if (count.value < inputsNumber) return; data = parser.call(form[0], data); if (data !== null) { $.ajax({ method: form.attr("method") || "GET", url: form.attr("action"), data: data }).done(function (data) { done.call(form[0], data); form.triggerHandler("response", data); }); } }; ModernJs.AjaxForm.submit = function (e) { e.preventDefault(); var form = $(this); var done = form.data("AjaxFormDone") || ModernJs.AjaxForm.responseDone; var parser = form.data("AjaxFormParser") || ModernJs.AjaxForm.responseParser; var inputs = form.find("[name]:not([disabled])"); var data = {}; var count = { value: 0 }; for (var i = 0; i < inputs.length; i++) { var input = $(inputs[i]); ModernJs.AjaxForm.readInput(data, form, input, count, function () { ModernJs.AjaxForm.submitAsync(data, parser, done, form, count, inputs.length); }); } ModernJs.AjaxForm.submitAsync(data, parser, done, form, count, inputs.length); }; ModernJs.AjaxForm.loadMain = function () { $("body").on("submit", "form[ajax-form], form[modernjs-ajax-form]", ModernJs.AjaxForm.submit); }; $(ModernJs.AjaxForm.loadMain); } });