我找到了更改无效值错误消息的答案如何更改或删除HTML5表单验证默认错误消息?
我需要为小于最小值和大于最大值的值显示不同的消息。
<input type="number" name="test" step="any" min="0.01" max="10.0">
如果用户输入 -1,则应显示"请输入正值"。
如果用户输入 20,则应显示"值不能超过 10"。
可能有一些花哨的 API 驱动的方法可以做到这一点,但如果在输入与pattern
不匹配时显示title
,您只需在更改时修改title
即可。
为了支持小数,你需要一些更高级的正则表达式。
*我包含了form
标签,以便验证将在代码段中工作
document.querySelector('input').addEventListener('change', (e) => {
if (e.target.value > 10) {
e.target.setAttribute('title', "Value cannot be more than 10");
} else if (e.target.value < 0) {
e.target.setAttribute('title', "Please enter a positive value");
} else {
e.target.setAttribute('title', "Please enter a number");
}
})
<form><input type="text" required="" pattern="10|[0-9]" value="" title="This is an error message" /></form>
使用HTML5 表单验证(从您的链接),您可以通过在input
元素上使用invalid
事件侦听器来使用自定义消息。
var myInput = document.getElementById("myInput");
myInput.addEventListener("invalid", validate);
myInput.addEventListener("keyup", validate);
function validate() {
var val = parseFloat(this.value);
var min = parseFloat(this.min);
var max = parseFloat(this.max);
if (val < min) {
this.setCustomValidity('Please enter a positive number');
} else if (val > max) {
this.setCustomValidity('Value cannot be more than ' + max);
} else {
this.setCustomValidity("");
}
}
<form>
<input id="myInput" type="number" name="test" step="any" min="0.01" max="10.0">
<button type="submit">Submit</button>
</form>