HTML中的表单是我们经常用到的一个功能,但是默认的验证和提示信息可能并不够友好。本文将为大家讲解HTML中如何使用表单自定义验证和错误提示信息,以及相应的代码案例。
在HTML5中,表单元素增加了一些新的特性,如required、min、max、maxlength、pattern等属性,这些属性可以在提交表单时进行自动验证,但是并不一定满足我们的需求。
为了实现更加复杂的验证,我们可以使用HTML5中的API进行自定义验证。在表单元素中,我们可以使用setCustomValidity()函数来设置自定义验证错误信息。
<form> <input type="text" id="name" required minlength="5"> <input type="submit" value="提交"> </form> <script> var nameInput = document.getElementById('name'); nameInput.addEventListener('input', function (event) { if (nameInput.validity.valueMissing) { nameInput.setCustomValidity('请输入用户名'); } else if (nameInput.validity.tooShort) { nameInput.setCustomValidity('用户名长度不能小于5位'); } else { nameInput.setCustomValidity(''); } }); </script>
在上面的代码中,我们为输入框设置了必填属性required和最小长度minlength,当输入框内容不符合这些规则时,会自动弹出错误提示信息。但是我们还可以使用addEventListener()函数监听输入框的输入事件,当用户输入不符合规则时,手动调用setCustomValidity()函数设置自定义的错误提示信息。
默认情况下,表单元素的错误提示信息会以系统默认的样式展示,我们可以通过CSS来自定义样式。
input:invalid { border-color: red; } input:invalid:focus { border-color: red; box-shadow: none; } input:invalid + span { color: red; }
在上面的代码中,我们为输入框设置了:invalid伪类选择器,当输入框内容不符合规则时,会自动应用这个样式。我们还为输入框的:focus状态和下一个标签设置了样式,以达到更好的可读性。
如果我们的网站需要支持多语言,那么我们也需要将表单的错误提示信息本地化。在HTML5中,我们可以使用HTMLFormElement.setCustomValidity()函数来设置错误提示信息的本地化。
<form> <input type="text" id="name" required minlength="5"> <input type="submit" value="提交"> </form> <script> var nameInput = document.getElementById('name'); nameInput.addEventListener('input', function (event) { if (nameInput.validity.valueMissing) { nameInput.setCustomValidity('请输入用户名'); } else if (nameInput.validity.tooShort) { nameInput.setCustomValidity('用户名长度不能小于5位'); } else { nameInput.setCustomValidity(''); } }); nameInput.setCustomValidity('用户名长度不能小于5位'); nameInput.setCustomValidity(''); nameInput.setCustomValidity('请输入用户名');
在上面的代码中,我们为输入框设置了本地化的错误提示信息。当用户语言设置为中文时,会显示中文错误提示信息,当用户语言设置为英文时,会显示英文错误提示信息。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com