Currently the checkValidity() method on an input element of type number only checks the lower and the upper bound of the value that is passed. When something is passed that isn't a number at all checkValidity() returns true although it should return false.
I'll open a pull request that demonstrates the problem and suggests a fix in a minute.