The validity read-only property of the HTMLButtonElement interface returns a ValidityState object that represents the validity states this element is in.
A ValidityState object.
The following example demonstrates that a <button> is in an invalid state when a customError is set; in this state, the validityState's validity property is false, while checkValidity() returns true if the button's type is not "submit", because such buttons are not candidates for constraint validation.
const button = document.getElementById("myButton");
button.setCustomValidity("This button is invalid.");
const validityState = button.validity;
console.log(validityState.valid); // false
console.log(validityState.customError); // true
console.log(button.checkValidity()); // false if the button is of the "submit" type, true otherwise