you can just simply using the oninvalid=" attribute, with the bingding the this.setCustomValidity() eventListener!
Here is my demo codes!(you can run it to check out!)
<!DOCTYPE html>_x000D_
<html lang="en">_x000D_
<head>_x000D_
<meta charset="UTF-8">_x000D_
<title>oninvalid</title>_x000D_
</head>_x000D_
<body>_x000D_
<form action="https://www.google.com.hk/webhp?#safe=strict&q=" method="post" >_x000D_
<input type="email" placeholder="[email protected]" required="" autocomplete="" autofocus="" oninvalid="this.setCustomValidity(`This is a customlised invalid warning info!`)">_x000D_
<input type="submit" value="Submit">_x000D_
</form>_x000D_
</body>_x000D_
</html>
_x000D_
http://caniuse.com/#feat=form-validation
https://www.w3.org/TR/html51/sec-forms.html#sec-constraint-validation