[pt-BR]
On the first article of this series, we defined the concepts involved in validating an element of a HTML form and created a coding pattern that we’ll use in the ‘name’ attribute which will carry the information regarding this validation.
Today we’ll see the definition of special form fields and how we’ll adapt our pattern to them.
When working with text-type fields it’s very simple to implement whether the field is required or not: we just test the number of characters of it’s ‘value’ attribute or it’s entire value to see if it’s empty. More on this on the next articles of this series.
Our job start to get complicated when we work with data types that may contain special characters and formatting. In these cases, it’s not enough to worry if the field was filled. Let’s take an example:
In a customer sign up form we have a text type field where the user must type his phone number. Our problem consists in the variety of representations of a phone number. Our hypothetical user could, for an example, type the following variations:
3555-0081
3555.0081
3555 0081
35550081
35.55.00.81
In all of these cases, our well mannered user is informing what we’ve asked – his phone number. When we have to store this data, however, this variety of formatting masks will be a problem to the organization, indexing and readability of these informations.
The solution to our problem begins with the definition of which special fields we’ll need to validate and how we’ll pass these validation informations both to the client side script (JavaScript) as well to the server side (PHP). As we’ve discussed previously, we’ll use four characters of the ‘name’ attribute to achieve this goal.
So we’ll define six different types of special fields which will be validated by our scripts:
| Code Pattern |
Meaning |
Rule |
Example |
| TELE |
Telephone |
9 characters: 4 digits, a dash and 4 more digits |
3555-0081 |
| DTNS |
Birth Date |
10 characters: 2 digits for month, a slash, 2 digits for day, another slash and 4 digits for the year. Must be lesser than today. |
1973/01/27 |
| DTFT |
Current or future date |
10 characters: 2 digits for month, a slash, 2 digits for day, another slash and 4 digits for the year. Must be equal or greater than today. |
2007/06/03 |
| EMIL |
E-mail address |
Must have one and only one ‘at’ symbol (‘@’). |
galvao@galvao.eti.br |
| PWD1 |
Password |
Only letters and numbers. |
abc123 |
| PWD2 |
Password – Consistency |
Only letters and numbers and must be equal to the previously typed password. |
abc123 |
Sure, there are dozens of other special fields that we can validate, but as soon you understand those six it will be relatively simple to implement any other kind of validation.
On the next article of this series we’ll finally begin to see some code and define how we’ll implement an automatic formatting mask in our special fields, so it saves both our time as well as the user’s.
See you there!
—
No primeiro artigo desta série, definimos os conceitos envolvidos na validação de um campo presente em um formulário HTML e criamos um padrão à ser utilizado no atributo ‘name’ que carregará a informação referente à esta validação.
Hoje veremos as definições de tipos de campos especiais e como adaptaremos nosso padrão à validação destes.
Quando trabalhamos com campos do tipo texto em um formulário HTML, nos é muito simples implementar a obrigatoriedade do preenchimento deste campo: basta testarmos pelo número de caracteres presentes no atributo ‘value’ deste ou ainda testarmos se o valor deste campo é diferente de vazio. Veremos mais detalhes sobre isso nas próximas partes desta matéria.
A situação começa a se complicar quando trabalhamos com tipos de dados que podem conter caracteres e formatações especiais. Nestes casos, o preenchimento ou não do campo deixa de ser nossa única preocupação. Observe o seguinte exemplo:
Em um formulário de cadastro de clientes, possuo um campo simples do tipo ‘text’ onde o usuário deve digitar seu telefone. Nosso problema consiste na existência de diversas formas de representação de um número telefônico. Nosso usuário hipotético poderia, por exemplo, utilizar as seguintes variações:
3555-0081
3555.0081
3555 0081
35550081
35.55.00.81
Em todos estes casos, nosso bem-intencionado usuário está nos informando o que pedimos – o seu número de telefone. Entretanto, a partir do momento em que precisamos armazenar esta informação, a existência desta variedade de máscaras de formatação certamente representará um obstáculo para a organização, indexação e legibilidade destas informações.
A solução do problema começa por uma definição de que tipos de campos especiais precisaremos validar e como passaremos estas informações para o script client-side (JavaScript) e para o script server-side (PHP). Como publicado na matéria anterior, utilizaremos quatro caracteres do atributo ‘name’ de nosso campo de formulário para alcançarmos este objetivo.
Sendo assim, definiremos seis tipos diferentes de campos especiais com o qual nossos scripts trabalharão:
| Padrão de código |
Significado |
Regra |
Exemplo |
| TELE |
Telefone |
9 caracteres: 4 dígitos, um hífen e outros 4 dígitos |
3555-0081 |
| DTNS |
Data de Nascimento |
10 caracteres: 2 dígitos para o dia, uma barra, 2 dígitos para o mês, outra barra e 4 dígitos para o ano. Deve ser menor do que a data de hoje. |
27/01/1973 |
| DTFT |
Data atual ou futura |
10 caracteres: 2 dígitos para o dia, uma barra, 2 dígitos para o mês, outra barra e 4 dígitos para o ano. Deve ser maior ou igual à data de hoje. |
12/06/2007 |
| EMIL |
E-mail |
Deve ter uma e apenas uma arroba. |
galvao@galvao.eti.br |
| PWD1 |
Senha |
Somente letras e números. |
abc123 |
| PWD2 |
Senha – Consistência |
Somente letras e números. Deve ser igual à senha digitada anteriormente. |
abc123 |
É claro que existem dezenas de outros campos especiais que podemos validar, mas a partir do momento que estes seis forem compreendidos, será relativamente simples implementar quaisquer outros tipos de validação.
Na próxima parte desta matéria trataremos da questão de como implementar automaticamente uma máscara em nossos campos especias, de forma à garantir o mínimo de trabalho para nosso usuário e para nosso script server-side.
Até lá!