-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.formajax.min.js
1 lines (1 loc) · 3.15 KB
/
jquery.formajax.min.js
1
!function(n){"use strict";function e(r){var t=n.extend({},{context:r,url:r.form.action,data:function(r,t){switch(r.toLowerCase()){case"json":for(var e={},a=function(){var t=/^(?:checkbox|radio)$/i,a=/\r?\n/g,e=/^(?:submit|button|image|reset|file)$/i,s=/^(?:input|select|textarea|keygen)/i;return this.map(function(){var r=jQuery.prop(this,"elements");return r?jQuery.makeArray(r):this}).filter(function(){var r=this.type;return this.name&&!jQuery(this).is(":disabled")&&s.test(this.nodeName)&&!e.test(r)&&(this.checked||!t.test(r))}).map(function(r,t){var e=jQuery(this).val();return null===e?null:jQuery.isArray(e)?jQuery.map(e,function(r){return{name:t.name,value:o(r,n(this).data("type"),a)}}):{name:t.name,value:o(e,n(this).data("type"),a)}}).get()}.call(t),s=0;s<a.length;s++)Dots.set(e,Dots.convertTo(a[s].name),a[s].value);return JSON.stringify(e);case"formdata":return window.FormData?new FormData(t[0]):t.serialize();default:return t.serialize()}}(r.dataType,n(r.form)),contentType:function(r){switch(r.toLowerCase()){case"json":return"application/json";case"formdata":return!1;default:return"application/x-www-form-urlencoded"}}(r.dataType),processData:!1},r.ajax);n.ajax(t)}function o(r,t,e){return"int"===t&&String(Math.floor(parseInt(r)))===r?parseInt(r):"float"===t&&String(parseFloat(r))===r?parseFloat(r):"bool"===t?!(""===r||"0"===r):""===r?null:r.replace(e,"\r\n")}function i(r,t){var e,a,s,n=0,o=t.split("."),i=[o[0]];for(a=1;a<o.length;a++){var u=[];for(s=n=0;s<i.length;s++)u.push(i[s]+"["+o[a]+"]");if(!isNaN(o[a])||"*"===o[a])for(n="*"===o[a]?0:parseInt(o[a]),s=0;s<i.length;s++)u.push(i[s]+"[]");i=u}for(a=0;a<i.length;a++)if((e=r.find('[name="'+i[a]+'"]')).length>n)return e[n];return null}n.fn.formAjax=function(r){return this.each(function(){if("form"===this.tagName.toLowerCase()){var t="object"==typeof r&&r||{};switch((t=n.extend({form:this},n.fn.formAjax.defaults,r)).ajax=n.extend({method:n(this).data("ajax-method")||"POST"},n.fn.formAjax.defaults.ajax,t.ajax),t.responses=n.extend(n.fn.formAjax.defaults.responses,t.responses),n(this).data("formAjax",t),t.action){case"bind":n(this).off("submit.formajax").on("submit.formajax",function(r){return r.preventDefault(),e(t),!1});break;case"submit":e(t)}}})},n.fn.formAjax.defaults={action:"bind",dataType:"formData",ajax:{success:function(r,t,e){var a=this;if(a.responses.hasOwnProperty(e.status))a.responses[e.status].call(a.form,e,t,r);else{var s=Math.floor(e.status/100)+"XX";a.responses.hasOwnProperty(s)&&a.responses[s].call(a.form,e,t,r)}},error:function(r,t,e){var a=this;if(a.responses.hasOwnProperty(r.status))a.responses[r.status].call(a,r,t,e);else{var s=Math.floor(r.status/100)+"XX";a.responses.hasOwnProperty(s)&&a.responses[s].call(a,r,t,e)}}},responses:{422:function(r){var t=this,e=JSON.parse(r.responseText);for(var a in e.errors)if(e.errors.hasOwnProperty(a)){var s=i(n(t.form),a);t.displayError?t.displayError(s,e.errors[a]):n.fn.formAjax.displayError(s,e.errors[a])}}},displayError:null},n.fn.formAjax.displayError=function(r,t){r&&(t=Array.isArray(t)?t:Object.keys(t).map(function(r){return t[r]}),r.setCustomValidity(t.join(". ")),r.reportValidity(),n(r).on("change",function(){this.setCustomValidity("")}))}}(jQuery);