E2.07.2mask caret and paste interference设计研究

掩码会干扰粘贴与光标移动

别名: 掩码光标跳动 · input mask caret · 粘贴被掩码吃掉

概念解释

掩码把槽分成「可写格子」和「系统占用的分隔符」。粘贴一整串、用方向键改中间几位、或删到分隔符上时,光标会跳到掩码认为的下一个可写格,值被截断、重复或错位。这叫掩码对粘贴与光标的干扰(mask caret and paste interference)。它是编辑已有内容时的冲突,不是「自动插杠能减负」,也不是「只接受一种地区格式」。

机制

掩码维护两套索引:用户以为的字符下标,和内部「跳过分隔符之后的格子」。粘贴进来的串若已含横线、空格或国家码,掩码会按自己的格子去消化:有的实现丢掉所有非数字再重排,有的把已有横线再插一遍变成双杠,有的在长度满时静默截断剪贴板。方向键向左时,若下一格是分隔符,光标会一次跳两格,或卡在不可编辑的杠上,退格删的是分隔符而不是数字。人的编辑模型是「字符串」,掩码的模型是「带固定家具的格子」,两套模型在改中间、粘贴、全选时对不上。

怎么研究

准备三种剪贴板内容:纯数字、已带本国分隔符、带国际前缀,分别贴进掩码槽,记录结果串、光标落点、是否截断。再让人把光标移到中间改一位、从末尾连续退格。因变量:粘贴一次成功率、中间编辑的错位、误删分隔符次数。不同库的掩码行为差异很大,研究要注明实现,不能把某 UI 库的 bug 写成「掩码」的普遍定律。键盘用户与指针点选中间位置要分开测。

边界

从不粘贴、只从空槽顺序键入的场景,光标冲突几乎不出现。移动端长按粘贴是主路径,干扰被放大。密码管理器和 OTP 自动填充也走粘贴通道,掩码可能把一次性密码截成前几位。若产品选择「失焦时才格式化」,输入过程中没有掩码格子,粘贴冲突消失,但那也不再是键入时掩码。IME 组字过程中的临时字符会被掩码当成非法键丢掉,中文、日文输入法下中间编辑更糟。

怎么落地

  • 粘贴时先剥离或识别已有分隔符,再一次性填入格子,不要按源串逐字符与掩码家具对撞。
  • 让方向键和退格跳过分隔符时仍删除「上一个有效字符」,光标不要停在不可编辑的杠上。
  • 剪贴板超长时明确截断并提示,禁止静默丢掉后半段。
  • 验证:从通讯录复制带横线的电话、从邮件复制带空格的卡号、把光标点进中间改一位。任何一次结果串错位或光标失踪,就修粘贴与 caret 逻辑,而不是加一句「请不要粘贴」。

延伸

  • 同组E2.07.1 掩码自动插入分隔符降低输入负担 · E2.07.3 掩码不得限制合法的变体格式
  • 相邻E2.09 密码输入 · E2.16 自动补全下拉
  • 站内检索mask caret and paste interference · input mask caret · clipboard

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E2.07.2