BlackBerry OS 7 及更早版本不支持 pattern 属性,其表单验证能力极弱,需手动实现正则校验逻辑。

pattern 属性在 BlackBerry 浏览器(尤其是 OS 7 及更早版本)中基本不被支持,实际表现是被跳过或完全忽略。
BlackBerry Browser 的 HTML5 表单验证能力非常有限。即使你写了 ,它既不会触发客户端正则校验,也不会显示 title 提示,更不会阻止表单提交。
如何确认当前设备是否支持 pattern
- 检查
HTMLInputElement.prototype.checkValidity是否存在且返回true(但注意:BlackBerry 7 的checkValidity()可能返回true即使pattern不匹配——这是已知 bug) - 更可靠的方式是主动测试:
document.createElement('input').pattern !== undefined,在 BlackBerry 7.1 及以下返回undefined
BlackBerry 浏览器对 pattern 的典型失效场景
- 输入不符合正则的值,点击提交,表单照常提交(无拦截、无提示)
-
:valid/:invalid伪类不触发样式变化 -
setCustomValidity('')手动设置后,checkValidity()仍可能返回true,导致逻辑误判 -
validationMessage属性始终为空字符串
替代方案必须手动实现
- 不要依赖原生
pattern,改用input或blur事件 +RegExp.test() - 提交前统一调用
form.checkValidity()并手动补全逻辑(因为该方法在 BlackBerry 上不可信,得自己重写校验) - 使用
type="text"配合 JavaScript 拦截粘贴、键盘输入(如禁用非数字键),比寄希望于pattern更可靠
BlackBerry 浏览器的表单验证链路断裂点很多,pattern 是其中最易被默认忽略的一环。只要目标用户里还有 BlackBerry OS 7 用户,就得当成“不存在”来设计。











