自定义表单校验怎么和原生 required 一起用?
我用 HTML 原生的 <input required> 做基础校验,但还想加个自定义规则:比如用户名不能是 admin。我在 submit 事件里写了判断,可一旦输入框为空,浏览器会先弹出“请填写此字段”,根本不触发我的 JS 校验。
试过用 novalidate 关掉原生提示,但这样连空值都不提醒了。有没有办法让原生 required 先生效,再跑我的自定义逻辑?比如下面这样:
<form id="myForm">
<input type="text" id="username" required />
<button type="submit">提交</button>
</form>
JS 里想同时处理空值和特殊值,但总被原生行为打断,咋整?
invalid事件来处理。先把表单缓存起来,然后监听两个事件:submit 和 invalid。submit 用来跑你的特殊值校验,invalid 处理空值情况。
这样写有个好处:原生校验先跑,如果通过了才执行你的逻辑。注意用了捕获阶段,效率更高。
其实浏览器内置校验已经挺快了,别自己重复造轮子。这种方案兼顾性能和功能,省事又高效。累死个人,每天都在跟这些细节较劲。