Last active
January 7, 2023 19:52
-
-
Save nuxodin/73a2c2423cbbf6818c28ad803985d5c7 to your computer and use it in GitHub Desktop.
Polyfill for reportValidity()
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Copyright (c) 2016 Tobias Buschor https://goo.gl/gl0mbf | MIT License https://goo.gl/HgajeK */ | |
if (!HTMLFormElement.prototype.reportValidity) { | |
HTMLFormElement.prototype.reportValidity = function() { | |
if (this.checkValidity()) return true; | |
var btn = document.createElement('button'); | |
this.appendChild(btn); | |
btn.click(); | |
this.removeChild(btn); | |
return false; | |
}; | |
} | |
if (!HTMLInputElement.prototype.reportValidity) { | |
HTMLInputElement.prototype.reportValidity = function(){ | |
if (this.checkValidity()) return true | |
var tmpForm; | |
if (!this.form) { | |
tmpForm = document.createElement('form'); | |
tmpForm.style.display = 'inline'; | |
this.before(tmpForm); | |
tmpForm.append(this); | |
} | |
var siblings = Array.from(this.form.elements).filter(function(input){ | |
return input !== this && !!input.checkValidity && !input.disabled; | |
},this); | |
siblings.forEach(function(input){ | |
input.disabled = true; | |
}); | |
this.form.reportValidity(); | |
siblings.forEach(function(input){ | |
input.disabled = false; | |
}); | |
if (tmpForm) { | |
tmpForm.before(this); | |
tmpForm.remove(); | |
} | |
this.focus(); | |
this.selectionStart = 0; | |
return false; | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Is there anyway to intercept or listen if
reportValidity
has been called?