Skip to content

Instantly share code, notes, and snippets.

@mcshaz
Forked from newhope/reportValidity.js
Last active April 17, 2020 08:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mcshaz/c65040c11e6daffe356cbedb7ec84ce4 to your computer and use it in GitHub Desktop.
Save mcshaz/c65040c11e6daffe356cbedb7ec84ce4 to your computer and use it in GitHub Desktop.
reportValidity polyfill for IE 10, 11
if (!HTMLFormElement.prototype.requestSubmit) {
HTMLFormElement.prototype.requestSubmit = function() {
const submitBtn = document.createElement('input');
submitBtn.type = 'submit';
submitBtn.hidden = true;
this.appendChild(submitBtn);
submitBtn.click();
this.removeChild(submitBtn);
};
}
if (!HTMLFormElement.prototype.reportValidity) {
HTMLFormElement.prototype.reportValidity = function() {
if (this.checkValidity()){
return true;
}
if (this.noValidate){
this.noValidate = false;
this.requestSubmit();
this.noValidate = true;
} else {
this.requestSubmit();
}
return false;
};
}
@nuxodin
Copy link

nuxodin commented Apr 17, 2020

Great work!
requestSubmit has a "submitter" argument
https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/requestSubmit
This can worn work (not tested):

if (!HTMLFormElement.prototype.requestSubmit) {
    HTMLFormElement.prototype.requestSubmit = function(submitter) {
        let submitBtn = submitter;
        if (!submitBtn) {
            submitBtn = document.createElement('input');
            submitBtn.type = 'submit';
            submitBtn.hidden = true;
            this.appendChild(submitBtn);
        }
        submitBtn.click();
        !submitter && this.removeChild(submitBtn);
    };
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment