HTML表单必填字段的默认提示怎么改样式啊?
折腾了一下午都没搞定,我给输入框加了required属性,但提交时弹出的默认提示框太丑了,怎么才能改成自定义的提示文字和样式呢?
试过在input里写oninvalid="setCustomValidity('请输入')",但这样文字还是不够友好。而且当用户输入错误后,怎么才能让提示框跟着光标动呢?
代码大概是这样的:
<form>
<input type="text" required>
<button>提交</button>
</form>
现在点提交直接弹出系统警告框,想改成页面内显示的提示信息,但不知道该从哪里下手...
要实现你想要的「自定义提示文字 + 靠近输入框显示」的效果,核心思路是:禁用原生验证提示,自己监听事件 + 手动渲染提示 DOM。
具体怎么做呢?
首先,给 form 加上
novalidate属性,这样浏览器就不会自动弹出那个系统级的提示框了:然后用 JS 监听表单提交事件,在提交前自己做校验,发现空值就阻止提交、显示自定义提示:
关键来了——那个「靠近输入框」的提示框,你可以动态创建一个 span 元素,绝对定位在 input 旁边。比如:
你还可以在 input 的
input事件里清掉错误提示,提升体验:⚠️ 安全提醒:提示文案如果包含用户输入的内容,记得转义,避免 XSS。比如:
或者用
innerText/textContent,别用innerHTML。这样搞完,提示样式完全可控,位置也能自己定,而且兼容性好(不依赖浏览器原生行为)。唯一要多写点 JS 和 CSS,但值。
这样改完提示信息就在页面里显示,不会跳出难看的系统弹框,样式想怎么调就怎么调。