form-request-submit-polyfill
Version:
<form>.requestSubmit() polyfill
28 lines (24 loc) • 1.03 kB
JavaScript
(function(prototype) {
if (typeof prototype.requestSubmit == "function") return
prototype.requestSubmit = function(submitter) {
if (submitter) {
validateSubmitter(submitter, this)
submitter.click()
} else {
submitter = document.createElement("input")
submitter.type = "submit"
submitter.hidden = true
this.appendChild(submitter)
submitter.click()
this.removeChild(submitter)
}
}
function validateSubmitter(submitter, form) {
submitter instanceof HTMLElement || raise(TypeError, "parameter 1 is not of type 'HTMLElement'")
submitter.type == "submit" || raise(TypeError, "The specified element is not a submit button")
submitter.form == form || raise(DOMException, "The specified element is not owned by this form element", "NotFoundError")
}
function raise(errorConstructor, message, name) {
throw new errorConstructor("Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message + ".", name)
}
})(HTMLFormElement.prototype);