Introdução à Validação de Restrição HTML5
Sites e aplicativos interativos não podem ser imaginados sem formulários que nos permitam conectar-se com nossos usuários, e para obter os dados precisamos para garantir transações tranquilas com eles. Nós precisamos entrada de usuário válida, no entanto, precisamos adquiri-lo de uma forma que não frustra nossos usuários demais.
Embora possamos melhorar a usabilidade de nossos formulários com padrões de design UX inteligentemente escolhidos, o HTML5 também possui um mecanismo nativo de validação de restrição que nos permite pegar erros de entrada diretamente no front-end.
Neste post, vamos nos concentrar validação de restrição fornecida pelo navegador, e veja como os desenvolvedores frontend podem entrada segura do usuário válida usando HTML5.
Por que precisamos de validação de entrada de front-end?
Validação de entrada tem dois objetivos principais. O conteúdo que recebemos precisa ser:
1. Útil
Nós precisamos dados utilizáveis podemos trabalhar com. Precisamos fazer as pessoas entrarem dados realistas no formato certo. Por exemplo, ninguém que esteja vivo hoje nasceu há 200 anos. Obter dados como esse pode parecer engraçado no começo, mas a longo prazo é irritante e preenche nosso banco de dados com dados inúteis..
2. Seguro
Quando se refere à segurança, isso significa que precisamos impedir a injeção de conteúdo malicioso - deliberadamente ou por acidente.
A utilidade (obtenção de dados razoáveis) pode ser alcançada apenas no lado do cliente, a equipe de back-end não pode ajudar muito com isso. Para atingir segurança, desenvolvedores front-end e backend precisam trabalhar juntos.
Se os desenvolvedores frontend validarem corretamente a entrada no lado do cliente, o equipe de back-end terá que lidar com muito menos vulnerabilidades. Hackear (um site) geralmente envolve enviando dados extras, ou dados no formato errado. Os desenvolvedores podem combater falhas de segurança como essas, lutar com sucesso no front-end.
Por exemplo, este guia de segurança do PHP recomenda verificar tudo o que pudermos no lado do cliente. Eles enfatizam a importância da validação de entrada de interface, fornecendo muitos exemplos, como:
"A validação de entrada funciona melhor com valores extremamente restritos, por exemplo, quando algo precisa ser um número inteiro ou uma cadeia alfanumérica ou um URL HTTP."
Na validação de entrada de frontend, nosso trabalho é impor restrições razoáveis na entrada do usuário. O recurso de validação de restrição do HTML5 nos fornece os meios para isso.
Validação de restrição de HTML5
Antes do HTML5, os desenvolvedores frontend estavam limitados a validando a entrada do usuário com JavaScript, que foi um processo tedioso e propenso a erros. Para melhorar a validação de formulários no lado do cliente, o HTML5 introduziu validação de restrição algoritmo que é executado em navegadores modernos e verifica a validade da entrada submetida.
Para fazer a avaliação, o algoritmo usa o atributos relacionados à validação de elementos de entrada, tal como ,
, e
. Se você quiser saber como a validação de restrição acontece passo a passo no navegador, confira este documento WhatWG.
Graças ao recurso de validação de restrição do HTML5, podemos executar todos tarefas de validação de entrada padrão no lado do cliente sem JavaScript, somente com HTML5.
Para realizar tarefas relacionadas à validação mais complexas, o HTML5 nos fornece um API JavaScript de validação de restrição podemos usar para configurar nossos scripts de validação personalizados.
Valide com os tipos de entrada semântica
HTML5 introduziu tipos de entrada semântica que - além de indicar o significado do elemento para os agentes do usuário - também pode ser usado para validar entrada do usuário limitando os usuários a um determinado formato de entrada.
Além dos tipos de entrada que já existiam antes do HTML5 (texto
, senha
, enviar
, restabelecer
, rádio
, caixa de seleção
, botão
, escondido
), também podemos usar o seguinte tipos de entrada HTML5 semânticos: o email
,tel
,url
,número
,Tempo
,encontro
,data hora
,datetime-local
, mês
,semana
, alcance
, procurar
,cor
.
Podemos usar com segurança tipos de entrada HTML5 com navegadores mais antigos, pois eles se comportarão como um campo em navegadores que não os suportam.
Vamos ver o que acontece quando o usuário digita o tipo de entrada incorreto. Digamos que criámos um campo de entrada de email com o seguinte código:
Quando o usuário digita uma string que não usa um formato de email, o algoritmo de validação de restrição não envia o formulário, e retorna uma mensagem de erro:
A mesma regra se aplica a outros tipos de entrada, por exemplo, type = "url"
os usuários podem enviar apenas uma entrada que segue o formato da URL (começa com um protocolo, como http: //
ou ftp: //
).
Alguns tipos de entrada usam um design que nem permite que os usuários insiram um formato de entrada incorreto, por exemplo cor
e alcance
.
Se usarmos o cor
tipo de entrada o usuário é obrigado a escolher uma cor do seletor de cores ou permanecer com o preto padrão. O campo de entrada é constrangido pelo design, portanto, não deixa muita chance de erro do usuário.
Quando for apropriado, vale a pena considerar o uso do Tag HTML que funciona de maneira semelhante a esses tipos de entrada restritos por design; ele permite que os usuários escolham em uma lista suspensa.
Use os Atributos de Validação do HTML5
O uso de tipos de entrada semântica define algumas restrições sobre o que os usuários podem enviar, mas, em muitos casos, queremos ir um pouco mais longe. Isto é quando o atributos relacionados à validação do tag pode nos ajudar.
Atributos relacionados à validação pertencem a certos tipos de entrada (eles não podem ser usados em todos tipos) em que eles impõem restrições adicionais.
1. requeridos
para obter uma entrada válida por todos os meios
o requeridos
atributo é o atributo de validação HTML mais conhecido. É um atributo booleano o que significa isso não leva nenhum valor, nós simplesmente temos que colocá-lo dentro do tag se quisermos usá-lo:
Se o usuário esquecer de inserir um valor em um campo de entrada obrigatório, o navegador retorna uma mensagem de erro que os avisa para preencher o campo, e eles não pode enviar o formulário até que tenham fornecido uma entrada válida. É por isso que é importante sempre marque visualmente campos obrigatórios para usuários.
o requeridos
atributo pode ser usado em conjunto com os seguintes tipos de entrada: texto
, procurar
, url
, tel
, o email
, senha
, encontro
, data hora
, datetime-local
, mês
, semana
,Tempo
, número
, caixa de seleção
, rádio
, Arquivo
, mais com o e
Tags HTML.
2. min
, máximo
e degrau
para validação de números
o min
, máximo
e degrau
atributos nos permitem colocar restrições nos campos de entrada numérica. Eles podem ser usados em conjunto com o alcance
, número
, encontro
, mês
, semana
, data hora
, datetime-local
, e Tempo
tipos de entrada.
o min
e máximo
atributos fornecem uma ótima maneira de facilmente excluir dados não razoáveis. Por exemplo, o exemplo abaixo força os usuários a enviar uma idade entre 18 e 120.
Quando o algoritmo de validação de restrição trava em uma entrada do usuário menor que a min
, ou maior que o máximo
valor, impede que ele atinja o backend e retorna uma mensagem de erro.
o degrau
atributo especifica um intervalo numérico entre os valores legais de um campo de entrada numérico. Por exemplo, se quisermos que os usuários escolham apenas nos anos bissextos, podemos adicionar passo = "4"
atributo para o campo. No exemplo abaixo eu usei o número
tipo de entrada, como não há type = "year"
em HTML5.
Com as restrições predefinidas, os usuários só podem escolher entre anos bissextos, entre 1972 e 2016, se usarem a pequena seta para cima que vem com o número
tipo de entrada. Eles também podem digitar um valor manualmente no campo de entrada, mas caso ele não atenda às restrições, o navegador retornará uma mensagem de erro.
3. comprimento máximo
para validação de tamanho de texto
o comprimento máximo
atributo torna possível definir um comprimento máximo de caracteres para campos de entrada textuais. Pode ser usado em conjunto com o texto
, procurar
, url
, tel
, o email
e senha
tipos de entrada, e com o Tag HTML.
o comprimento máximo
atributo pode ser uma excelente solução para campos de números de telefone que não podem ter mais de um certo número de caracteres, ou para formulários de contato onde não queremos que os usuários escrevam mais que um determinado tamanho.
O snippet de código abaixo mostra um exemplo para o último, ele restringe as mensagens do usuário a 500 caracteres.
o comprimento máximo
atributo não retorna uma mensagem de erro, mas o navegador simplesmente não permite que os usuários digitem mais do que o número de caractere especificado. É por isso que é crucial informar os usuários sobre a restrição, caso contrário, eles não vão entender por que eles não podem continuar com a digitação.
4. padronizar
para validação Regex
o padronizar
atributo nos permitem use expressões regulares em nosso processo de validação de entrada. Uma expressão regular é um conjunto pré-definido de caracteres que formam um certo padrão. Podemos usá-lo para pesquisar sequências que seguem o padrão ou para impor um determinado formato definido pelo padrão.
Com o padronizar
atributo que podemos fazer o último - restringir os usuários a enviar sua entrada em um formato que corresponde à expressão regular dada.
o padronizar
atributo tem muitos casos de uso, mas pode ser especialmente útil quando queremos validar um campo de senha.
O exemplo abaixo requer que os usuários insiram uma senha com no mínimo 8 caracteres e contém pelo menos uma letra e um número (fonte do regex que usei).
Mais algumas coisas
Neste artigo, vimos como fazer uso do validação de formulário fornecida pelo navegador fornecido pelo algoritmo de validação de restrição nativa do HTML5. Para criar nossos scripts de validação personalizados, precisamos usar a API de validação de restrições que pode ser a próxima etapa do refinamento das habilidades de validação de formulários..
Os formulários em HTML5 são acessíveis por tecnologias assistivas, portanto, não precisamos necessariamente usar ária-obrigatório
Atributo ARIA para marcar campos de entrada obrigatórios para leitores de tela. No entanto, ainda pode ser útil adicionar suporte de acessibilidade para navegadores mais antigos. Também é possível Desativar a validação de restrição adicionando o novalidate
atributo booleano para o elemento.