in HTML5, there is the form attribute. Basically
If you send form via ajax and use vanilla js, you can add inputs with "form" attribute like below:
function sendViaAjax(event, callback) {
event.preventDefault();
var form = event.target;
var formId = form.id;
var url = form.getAttribute('action');
var method = form.getAttribute('method');
var data = new FormData(form);
if(isInternetExplorer() && formId) {
var formInputs = document.querySelectorAll('input[form="'+formId+'"], textarea[form="'+formId+'"], select[form="'+formId+'"]');
[].forEach.call(formInputs, function (el) {
var inputName = el.getAttribute('name');
data.append(inputName, el.value);
});
}
var xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = function () {
// something
};
xhr.onerror = function () {
// something
};
xhr.send(data);
}
function isInternetExplorer() {
return (navigator.appName == 'Microsoft Internet Explorer' ||
!!(navigator.userAgent.match(/Trident/) ||
navigator.userAgent.match(/rv:11/)) ||
(typeof $.browser !== "undefined" && $.browser.msie == 1));
}