UNPKG

modular-ujs

Version:
49 lines (37 loc) 1.13 kB
function AjaxForm () { document.addEventListener('submit', function(event) { var form = event.target; if (form.matches('form[data-remote]')) { var url = form.action; var method = (form.method || form.getAttribute('data-method') || 'POST').toUpperCase(); var data = new FormData(form); if (CSRF.param() && CSRF.token()) { data[CSRF.param()] = CSRF.token(); } else if (formHasNoInputs(form)) { data = null; } if (LiteAjax.ajax({ url: url, method: method, data: data, target: form })){ event.preventDefault(); } else { return true; } } }); } function formHasNoInputs (form) { var element, fieldType; for (var i = 0, elements = form.elements, count = elements.length; i < count; i++) { element = elements[i]; fieldType = element.nodeName.toUpperCase(); if (!element.hasAttribute('name') || element.disabled) { continue; } if ((fieldType == 'RADIO' || fieldType == 'CHECKBOX') && !element.checked) { continue; } return false; } return true; } export default AjaxForm