Olá pessoal, neste artigo vamos falar sobre uma nova funcionalidade do HTML5 que é muito útil na criação de validações de formulários, é o HTML5 Validator.
Há muito tempo a validação de um campo de formulário é uma coisa que vem dando muito trabalho aos desenvolvedores, muitos programadores desenvolveram formas de validação em javascript, depois com o surgimento do jQuery logo apareceu um plugin de validação, mas agora com o novo HTML5 as coisas ficaram muito, mas muito mais fáceis, pois a validação tornou-se algo nativo da linguagem.
Nesse artigo vou mostrar algumas opções de como realizar a validação de um campo, seja ela por javascript ou no HTML5.
Vamos começar pela validação em javascript, abaixo vamos usar o seguinte código html, será um código simples de um formulário, o qual iremos validar para não ser enviado sem nada escrito.
<!DOCTYPE html>
<html>
<head>
<title>Validação de formulários - DevMedia Tutorial</title>
</head>
<body>
<form action="pagina de ação" method="post" name="dados"
onSubmit="return enviardados();" >
<table width="588" border="0" align="center" >
<tr>
<td width="118"><font size="1" face="Verdana,
Arial, Helvetica, sans-serif">Nome completo:</font></td>
<td width="460">
<input name="tx_nome" type="text" class="formbutton"
id="tx_nome" size="52" maxlength="150">
</td>
</tr>
<tr>
<td><font size="1" face="Verdana, Arial, Helvetica,
sans-serif">E-mail:</font></td>
<td><font size="2">
<input name="tx_email" type="text" id="tx_email" size="52"
maxlength="150" class="formbutton">
</font></td>
</tr>
<tr>
<td><font face="Verdana, Arial, Helvetica,
sans-serif"><font size="1">Mensagem<strong>:
</strong></font></font></td>
<td rowspan="2"><font size="2">
<textarea name="tx_mensagem" cols="50" rows="8"
class="formbutton" id="tx_mensagem" input ></textarea>
</font></td>
</tr>
<tr>
<td height="85"><p><strong><font face="Verdana,
Arial, Helvetica, sans-serif"><font size="1">
</font></font></strong></p></td>
</tr>
<tr>
<td height="22"></td>
<td>
<input name="Submit" type="submit" class="formobjects"
value="Enviar dados">
<input name="Reset" type="reset" class="formobjects"
value="Redefinir">
</td>
</tr>
</table>
</form>
</body>
</html>
Esse é o nosso formulário, que deverá ser exibido como mostra a figura 1.
Agora precisamos usar o Javascript para validar esses campos. O que queremos que aconteça é que seja impossível enviar os dados do formulário com o campo vazio, para isso iremos utilizar um código javascript.
<script language="JavaScript" >
function enviardados(){
if(document.dados.tx_nome.value=="" ||
document.dados.tx_nome.value.length < 8)
{
alert( "Preencha campo NOME corretamente!" );
document.dados.tx_nome.focus();
return false;
}
if( document.dados.tx_email.value=="" ||
document.dados.tx_email.value.indexOf('@')==-1 ||
document.dados.tx_email.value.indexOf('.')==-1 )
{
alert( "Preencha campo E-MAIL corretamente!" );
document.dados.tx_email.focus();
return false;
}
if (document.dados.tx_mensagem.value=="")
{
alert( "Preencha o campo MENSAGEM!" );
document.dados.tx_mensagem.focus();
return false;
}
if (document.dados.tx_mensagem.value.length < 50 )
{
alert( "É necessario preencher o campo MENSAGEM com
mais de 50 caracteres!" );
document.dados.tx_mensagem.focus();
return false;
}
return true;
}
</script>
Após colocarmos esse código nosso formulário deverá validar, se por exemplo deixarmos o campo nome em branco, ele mostrará a seguinte mensagem:
Dessa forma nosso formulário está sendo validado, de forma simples e fácil, mas com um código um pouco grande, como podemos ver.
Validando com HTML5
Com a chegada da nova versão do HTML, além de muitas outras melhorias, agora podemos validar um campo sem precisar escrever muito código, tornando o trabalho dos desenvolvedores muito mais prático e fácil.
Na listagem a seguir veremos que é possível fazer o mesmo do exemplo anterior de um maneira muito mais fácil e prática e escrevendo muito menos código.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Validação de formulários em HTML5</title>
</head>
<body>
<form method="post" action="">
<label for="nome">Nome: </label>
<input id="nome" type=text required name=nome/>
<br />
<label for="email">Email: </label>
<input id="email" type=text required name=email/>
<input type=submit value="OK"/>
</form>
</body>
</html>
Como podemos ver, escrevemos muito menos código do que anteriormente e na imagem a seguir podemos ver que o resultado é o mesmo da validação com javascript.
Personalizando a Mensagem de Validação
Caso você queira personalizar a mensagem de validação, é possível incluir uma nova mensagem junto da mensagem padrão do browser utilizando o atributo title, mas dessa forma ela não é personalizada por completo. Veja abaixo como ficaria:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Validação de formulários em HTML5</title>
</head>
<body>
<form method="post" action="">
<label for="nome">Nome: </label>
<input id="nome" type=text title="Preencha o campo Nome"
required name=nome/> <br />
<label for="email">Email: </label> <input
id="email" type=text required name=email/>
<input type=submit value="OK"/>
</form>
</body>
</html>
Devemos lembrar que esta mensagem não substitui a mensagem padrão do browser, apenas aparece junto com ela explicando o que há de errado.
Foi proposto um atributo para editar a mensagem por completo, mas ainda não foi aceito pela W3C(até a publicação desse artigo). Até o momento, apenas no Firefox é possível declarar uma mensagem de erro 100% personalizada sem a necessidade de JavaScript, usando o atributo x-moz-errormessage.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<title>Validação de formulários em HTML5</title>
</head>
<body>
<form method="post" action="">
<label for="nome">Nome: </label>
<input id="nome" type="text" required x-moz-errormessage="Ops.
Não esqueça de preencher este campo."/> <br />
<label for="email">Email: </label> <input id="email"
type="text required name=email/>
<input type=submit value="OK"/>
</form>
</body>
</html>
Caso você queira alterar a mensagem padrão de qualquer jeito, é possível fazer utilizando JavaScript. basta inserir o código abaixo em seu site:
...
var campo1 = document.getElementById('nome');
//Seleciona o campo com a ID "nome"
campo1.setCustomValidity('Preencha este campo corretamente.');
//uso setCustomValidity para trocar a mensagem de erro dele.
...
Espero que tenha ficado claro essas duas formas de validação de formulário, vimos que além de utilizar o antigo javascript, é possível usar tecnologia nova (html5) para realizar a mesma função e escrevendo muito menos código, mesmo que para algumas personalizações mais profundas, ainda seja necessário o uso de javascript.
Fiquem à vontade de escolher qual delas usar e qual irá atender mais as suas necessidades.