pattern属性在Android 4.4 WebView及旧版Chrome(≤52)中完全不触发验证,:valid/:invalid伪类无效,checkValidity()常误返回true;必须用JS手动校验,复用pattern值构造^...正则,监听input/blur事件,并调用reportValidity()确保提示生效。pattern 属性在 Android 4.4 WebView 和旧版 Chrome(≤52)里压根不触发验证旧版 Android 浏览器(特别是基于 WebKit 的 Android Browser 和早期 Chromium 内核 WebView)对 pattern 属性的支持极弱:表单提交时不会校验,:valid/:invalid 伪类不生效,甚至 checkValidity() 也常返回 true 无视正则。这不是"偶尔失效",而是根本没实现。实操建议:别依赖 pattern 做唯一校验,它只适合现代浏览器的辅助提示用 inputmode + type 组合提升软键盘体验(如 type="tel" + inputmode="numeric"),至少让输入更友好必须做 JS 手动校验------且不能只在 submit 时做,要监听 input 和 blur 事件,覆盖用户中途离开或粘贴场景怎么写兼容性好的手动正则校验逻辑核心是复用 pattern 属性值,避免维护两套正则。但要注意:HTML pattern 默认是全文匹配(隐式加 \^ 和 ),而 JS RegExp.prototype.test() 不会自动锚定,直接传入会误判。实操建议:提取 input.pattern 后,用 new RegExp('^' + pattern + '') 构造全匹配正则(注意转义特殊字符,简单起见可先限制 pattern 不含动态内容)校验时统一用 regex.test(input.value),不要用 String.prototype.match(),后者返回数组或 null,容易漏判空字符串示例:const input = document.querySelector('input\[pattern\]');const pattern = input.getAttribute('pattern');const regex = new RegExp('\^' + pattern + '');input.addEventListener('input', () => { const isValid = input.value === '' || regex.test(input.value); // 空值通常允许 input.setCustomValidity(isValid ? '' : '格式不正确');});setCustomValidity 要配合 reportValidity() 才能强制弹提示只设 setCustomValidity('xxx') 不会自动触发 UI 提示,尤其在旧 Android 上 submit 事件可能直接通过。必须显式调用 reportValidity() 触发原生气泡(如果支持)或降级为 alert。 文心快码 文心快码(Comate)是百度推出的一款AI辅助编程工具
相关推荐
实名上网宋凯宣17 小时前
Djangow-w0w-w18 小时前
SQL注入tianyuanwo18 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里一条泥憨鱼18 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路如若12318 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图IvorySQL18 小时前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制幽灵诶20 小时前
Mysql(基于测试的学习)砚底藏山河20 小时前
python量化自定义周期 K 线合成视觉小萌新20 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)宇宙无敌暴龙战士66620 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程