输入过程中校验会在未完成时报错
别名: 输入中校验 · 过早报错 · keyup validation · validate while typing
概念解释
输入过程中校验指每敲一个字符、或尚未宣布「这项填完」时,就对当前字符串跑规则并显示错误。邮箱写到 @ 之前、电话还差最后两位、密码强度条在第三字符变红,都是把中间态当成终态。人还在构造答案,界面已经判定失败。这条只解释为什么「边写边判」会在未完成时报错,不规定失焦才是正确时机,也不谈报错之后改正要不要马上撤掉红字。把焦点拉到出错项、或在顶部做错误清单,是定位问题,不是时机问题。
机制
一次输入是有时长的动作。校验器看到的是前缀,规则看到的是完整值。前缀几乎总是非法的:zhang@ 不是邮箱,138 不是手机号。过早报错把「尚未完成」编码成「你错了」,工作记忆里正在组装的格式被一条红字打断,人会停下来改已经对的部分,或删掉重来。第二层是运动程序:熟练用户按一串连续击键填完电话,中间插入的错误动画抢焦点、推布局,击键序列被拆开,错误率反而上升。对格式敏感的字段(邮箱、卡号、日期)伤害最大,因为合法值的任何真前缀都通不过同一条正则。校验本身没有错,错在把中间态送去终态规则。
怎么研究
同一字段比较「每个字符校验并显示错误」「达到最小长度后才显示」「提交前不在输入中显示」。用真实会分步写成的值(邮箱、国际电话),不要用单字符字段。
自变量:校验触发(逐键 / 最小长度 / 关闭输入中提示)、字段类型(有无合法前缀)、错误是否推动后续字段的位置。 因变量:中途停顿次数、删除重来比率、完成该项的时长、目光离开输入框去读错误的次数。
实验室任务短,过早报错主要表现为烦躁评分,不一定放弃。布局被错误文案顶下去的字段,测到的是跳动而不是规则本身——要把「文案占位预先留下」和「校验时机」拆开。
边界
密码强度、用户名唯一性这类反馈的价值就在过程中:人需要在还没提交时知道「再加一个字符就够」或「这个名被占了」。它们应显示为进度或建议,而不是把当前前缀判为错误。自动补全正在填入的过程中跑校验,会把补全动画和红字叠在一起,中间态更脏。单字符的验证码格子没有有意义的前缀,逐格校验不构成过早。屏幕阅读器若在每个字符都播报「无效」,输入通道会被错误流占满。
怎么落地
- 在人尚未离开字段时,不要把当前前缀送进「完整值」规则并渲染错误;允许内部静默检查,但错误文案等该项被宣布完成后再出现。
- 过程性反馈改用中性形态:密码用强度条,用户名用「检查中 / 可用」,不要把未写完的邮箱标成错误。
- 错误文案预留不挤动布局的空间,避免即便过早触发也造成后续字段跳动;这是减伤,不是允许过早报错。
- 验证:用慢动作输入一个合法邮箱,录下第一句错误出现的字符位置。若出现在
@或域名写完之前,时机失败。再对比关掉输入中错误后,该项的删除重来次数是否下降。