none
Validação de hora e data RRS feed

  • Pergunta

  • Pessoal bom dia, estou com o seguinte problema, tenho um campo TextBox chamado Data/Hora que recebe uma data e uma hora do banco de dados que é validado por uma mascara JavaScript que fica da seguinte forma: 

    10/12/2012 10:22:11

    Se o usuário vai modificar esta data e apaga a  barra criada pelo javascript o campo não deixa eu adicionar ela de novo.

    Alguém já teve este problema e pode me ajudar com uma possível solução?

    quinta-feira, 8 de março de 2012 13:43

Respostas

  • Entendo, então tenta essa function..

    Testei aqui e funcionou

    <%

    @ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="teste123._Default" LCID="1046"%>

    <!

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <

    html xmlns="http://www.w3.org/1999/xhtml">

    <

    head runat="server">

    <script type="text/javascript" language="javascript">

    function valida()

    {

    if (document.getElementById("<%=txtDescricao.ClientID%>").value == "")

    {

    alert(

    "Campo Obrigatorio.");

    document.getElementById(

    "<%=txtDescricao.ClientID%>").focus();

    return false;

    }

    else

    {

    return true;

    }

    }

    function DataHora(evento, objeto) {

    var keypress = (window.event) ? event.keyCode : evento.which;

    campo = eval(objeto);

    if (campo.value == '00/00/0000 00:00:00') {

    campo.value =

    ""

    }

    caracteres =

    '0123456789';

    separacao1 =

    '/';

    separacao2 =

    ' ';

    separacao3 =

    ':';

    conjunto1 = 2;

    conjunto2 = 5;

    conjunto3 = 10;

    conjunto4 = 13;

    conjunto5 = 16;

    if ((caracteres.search(String.fromCharCode(keypress)) != -1) && campo.value.length < (19)) {

    if (campo.value.length == conjunto1)

    campo.value = campo.value + separacao1;

    else if (campo.value.length == conjunto2)

    campo.value = campo.value + separacao1;

    else if (campo.value.length == conjunto3)

    campo.value = campo.value + separacao2;

    else if (campo.value.length == conjunto4)

    campo.value = campo.value + separacao3;

    else if (campo.value.length == conjunto5)

    campo.value = campo.value + separacao3;

    }

    else

    event.returnValue =

    false;

    }

    </script>

    <title></title>

    </

    head>

    <

    body>

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

    <div>

    <asp:ScriptManager ID="ScriptManager1" runat="server">

    </asp:ScriptManager>

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

    <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return valida()"

    CausesValidation="False" />

    <asp:GridView ID="Grv" runat="server" onrowdatabound="Grv_RowDataBound">

    </asp:GridView>

    <asp:TextBox ID="TextBox1" AutoPostBack="false" runat="server" maxlength="19" size="19" onKeyPress="DataHora(event, this)"> </asp:TextBox>

    <br />

    <br />

    </div>

    </form>

    </

    body>

    </

    html>


    CASO A RESPOSTA TENHA AJUDADO FAVOR MARCAR COMO RESPONDIDA.

    • Sugerido como Resposta Renan Buzzi quinta-feira, 8 de março de 2012 20:05
    • Marcado como Resposta Anderrssoon segunda-feira, 19 de março de 2012 17:39
    quinta-feira, 8 de março de 2012 19:48
  • Ola Anderrssoon,

    Você ja pensou em utilizar jQuery?

    olha este exemplo aqui é bem simples de configurar e funciona muito bem:

    http://www.ajaxianos.com.br/2009/03/mascara-para-campos-de-texto-jquery/

    Espero ter ajudado

    Abraços

    • Marcado como Resposta Anderrssoon segunda-feira, 19 de março de 2012 17:38
    terça-feira, 13 de março de 2012 16:33

Todas as Respostas

  • Cara eu não sei como sua mascara some, mas tem um exemplo aqui que eu ultiliza o AjaxTollKit

    Da uma olhada, funciona perfeitamente.

    <%

    @ Page Language="C#" AutoEventWireup="true" CodeBehind="AltoCompletarJquery.aspx.cs"

    Inherits="teste123.AltoCompletarJquery" %>

    <%

    @ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

    <!

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <

    html xmlns="http://www.w3.org/1999/xhtml">

    <

    head runat="server">

    <title></title>

    </

    head>

    <

    body>

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

    <div>

    <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">

    </cc1:ToolkitScriptManager>

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

    <cc1:MaskedEditExtender ID="txt_" runat="server" Enabled="True" Mask="99/99/9999 99:99"

    MaskType="Date" TargetControlID="txt" ClearMaskOnLostFocus="False">

    </cc1:MaskedEditExtender>

    <asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="txt"

    Display="Dynamic" ErrorMessage="Informe a Data" Operator="GreaterThan" Type="Date"

    Style="z-index: 0; left: 11px; position: absolute; top: 73px" ValueToCompare="01/01/1900"></asp:CompareValidator>

    <asp:Button ID="btn" runat="server" Text="Button" OnClick="btn_Click" />

    <br />

    </div>

    </form>

    </

    body>

    </

    html>


    CASO A RESPOSTA TENHA AJUDADO FAVOR MARCAR COMO RESPONDIDA.

    quinta-feira, 8 de março de 2012 15:20
  • Olá Renan, obrigado pela resposta.

    Então, eu não gostaria de utilizar Ajax (norma da empresa) e não entendo porque a mascara esta sumindo pois se eu apago todo o campo ela volta normalmente, agora, se eu apago apenas os dois pontos ela não volta mais.

    quinta-feira, 8 de março de 2012 15:42
  • Entendo, então tenta essa function..

    Testei aqui e funcionou

    <%

    @ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="teste123._Default" LCID="1046"%>

    <!

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <

    html xmlns="http://www.w3.org/1999/xhtml">

    <

    head runat="server">

    <script type="text/javascript" language="javascript">

    function valida()

    {

    if (document.getElementById("<%=txtDescricao.ClientID%>").value == "")

    {

    alert(

    "Campo Obrigatorio.");

    document.getElementById(

    "<%=txtDescricao.ClientID%>").focus();

    return false;

    }

    else

    {

    return true;

    }

    }

    function DataHora(evento, objeto) {

    var keypress = (window.event) ? event.keyCode : evento.which;

    campo = eval(objeto);

    if (campo.value == '00/00/0000 00:00:00') {

    campo.value =

    ""

    }

    caracteres =

    '0123456789';

    separacao1 =

    '/';

    separacao2 =

    ' ';

    separacao3 =

    ':';

    conjunto1 = 2;

    conjunto2 = 5;

    conjunto3 = 10;

    conjunto4 = 13;

    conjunto5 = 16;

    if ((caracteres.search(String.fromCharCode(keypress)) != -1) && campo.value.length < (19)) {

    if (campo.value.length == conjunto1)

    campo.value = campo.value + separacao1;

    else if (campo.value.length == conjunto2)

    campo.value = campo.value + separacao1;

    else if (campo.value.length == conjunto3)

    campo.value = campo.value + separacao2;

    else if (campo.value.length == conjunto4)

    campo.value = campo.value + separacao3;

    else if (campo.value.length == conjunto5)

    campo.value = campo.value + separacao3;

    }

    else

    event.returnValue =

    false;

    }

    </script>

    <title></title>

    </

    head>

    <

    body>

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

    <div>

    <asp:ScriptManager ID="ScriptManager1" runat="server">

    </asp:ScriptManager>

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

    <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return valida()"

    CausesValidation="False" />

    <asp:GridView ID="Grv" runat="server" onrowdatabound="Grv_RowDataBound">

    </asp:GridView>

    <asp:TextBox ID="TextBox1" AutoPostBack="false" runat="server" maxlength="19" size="19" onKeyPress="DataHora(event, this)"> </asp:TextBox>

    <br />

    <br />

    </div>

    </form>

    </

    body>

    </

    html>


    CASO A RESPOSTA TENHA AJUDADO FAVOR MARCAR COMO RESPONDIDA.

    • Sugerido como Resposta Renan Buzzi quinta-feira, 8 de março de 2012 20:05
    • Marcado como Resposta Anderrssoon segunda-feira, 19 de março de 2012 17:39
    quinta-feira, 8 de março de 2012 19:48
  • Ola Anderrssoon,

    Você ja pensou em utilizar jQuery?

    olha este exemplo aqui é bem simples de configurar e funciona muito bem:

    http://www.ajaxianos.com.br/2009/03/mascara-para-campos-de-texto-jquery/

    Espero ter ajudado

    Abraços

    • Marcado como Resposta Anderrssoon segunda-feira, 19 de março de 2012 17:38
    terça-feira, 13 de março de 2012 16:33