Validar campos (data) com expressões regulares

<< Click to Display Table of Contents >>

Navigation:  Miscelânea >

Validar campos (data) com expressões regulares

Previous pageReturn to chapter overviewNext page

Default.aspx

 

onBlur ocorre quando TextBox perde o foco. Vai chamar a função validaDat.

 

<head runat="server">

  <script type="text/javascript" src="util/Validacoes.js"></script>

</head>

<body>

  <form id="form1" runat="server">

  <div>

      <asp:Label ID="lblData" runat="server">Data:</asp:Label>

      <br />

      <asp:TextBox ID="txtData" class="mask_data" runat="server" onblur="validaDat(this,this.value)"></asp:TextBox>

      <br />

      <br />

      <asp:Label ID="lblCEP" runat="server">CEP:</asp:Label>

      <br />

      <asp:TextBox ID="txtCEP" runat="server"></asp:TextBox>

  </div>

  </form>

</body>

 

Validacoes.js

 

function validaDat(campo, valor) {

  var date = valor;

 

  // data zerada considera valida

  if (date == "__/__/__") {

      return true;

   }

 

  // cria uma expressão regular para validar a entrada de data

  var ExpReg = new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[0-9]{2}");

  var ardt = new Array;

   ardt = date.split("/");

   erro = false;

 

  // se não passou pela expressão regular, já cai fora

  if (date.search(ExpReg) == -1) {

       erro = true;

   } // ardt[0] = dia | ardt[1] = mês | ardt[2] = ano

  else if (((ardt[1] == 4) || (ardt[1] == 6) || (ardt[1] == 9) || (ardt[1] == 11)) && (ardt[0] > 30))

       erro = true;

  else if (ardt[1] == 2) {

      if ((ardt[0] > 28) && ((ardt[2] % 4) != 0))

           erro = true;

      if ((ardt[0] > 29) && ((ardt[2] % 4) == 0))

           erro = true;

   }

 

  // deu erro? mostra mensagem e retorna false

  if (erro) {

       alert("\"" + valor + "\" não é uma data válida!");

       campo.focus();

       campo.value = "";

      return false;

   }

 

  // chegou até aqui, OK

  return true;

}