对于正在寻找一种方法来完全本地化他们的错误信息的迷失灵魂,请参阅下面的片段。简而言之,您必须使用 切换属性event.target.validity
并覆盖相应的错误消息event.target.setCustomValidity(message)
。如果您只关心作为 OP 的空字段案例,只需考虑valueMissing
.
请注意,处理程序是以React方式传递的,但其他答案已经涵盖了如何在 vanilla JS 中执行此操作。
有关每个有效性状态的含义以及如何实现自定义错误消息,请参阅MDN:使用 JavaScript 验证表单。
const handleInvalidForm = (event) => {
const { patternMismatch,
tooLong,
tooShort,
rangeOverflow,
rangeUnderflow,
typeMismatch,
valid,
valueMissing } = event.target.validity;
if (patternMismatch)
event.target.setCustomValidity('...');
else if (tooLong)
event.target.setCustomValidity('...');
else if (tooShort)
event.target.setCustomValidity('...');
else if (rangeOverflow)
event.target.setCustomValidity('...');
else if (rangeUnderflow)
event.target.setCustomValidity('...');
else if (typeMismatch)
event.target.setCustomValidity('...');
else if (valid)
event.target.setCustomValidity('...');
else if (valueMissing)
event.target.setCustomValidity('...');
}
// ...
<form onSubmit={handleFormSubmit}
onInvalid={handleInvalidForm}
>
{emailTextField}
{passwordTextField}
{signInButton}
</form>