O campo OTP parece uma fila de caixas, mas por baixo é um único <input> nativo. O preenchimento automático por SMS (autocomplete="one-time-code"), a colagem, os gerenciadores de senhas, os formulários e os leitores de tela veem um campo de texto comum.
Códigos colados são limpos, então “123-456” e “123 456” funcionam, e caracteres que o padrão não permite são recusados. No Android, webOtp preenche o código a partir do SMS assim que ele chega.
Verificação
(completed) dispara quando a última caixa é preenchida. Defina aria-invalid na entrada para rejeitar um código: as caixas ficam vermelhas e tremem.
Try 123456, or anything else.
Letras, grupos e máscara
pattern="alphanumeric" também aceita letras, [groups] adiciona separadores e masked desenha pontos.