nakid.mkt 0 Denunciar post Postado Março 22, 2011 Oi Pessoal, Sou programador PHP e novado em ASP.NET C# Para validação de campo texto vi que existe o componente RequiredFieldValidator que realmente é uma mão na roda. Problema: Gostaria que a mensagem de erro aparecesse embaico do meu campo texto. Se eu coloco: <table> <tr> <td> Nome: </td> <td> <asp:TextBox ID="txtNome" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="rfvNome" runat="server" ErrorMessage="Campo não pode ser vazio." ControlToValidate="txtNome"></asp:RequiredFieldValidator> </td> </tr> </table> a mensagem aparece na frente, e se eu crio uma linha a mais como: <table> <tr> <td> Nome: </td> <td> <asp:TextBox ID="txtNome" runat="server" Width="200px"></asp:TextBox> </td> </tr> <tr> <td> </td> <td> <asp:RequiredFieldValidator ID="rfvNome" runat="server" ErrorMessage="Campo não pode ser vazio." ControlToValidate="txtNome"></asp:RequiredFieldValidator> </td> </tr> </table> a ultima <tr> fica vazia quando o formulario o componente não exibe nenhuma mensagem de erro de validação. Gostaria de saber como faço o meio termo desses dois. Aproveitando: pude perceber que o RequiredFieldValidator faz validação do lado do cliente. Ele é seguro? Caso eu queira fazer validação do lado do servidor devo usar um componente ou neste caso devo fazer na mão? Muito obrigado! Nakid Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Março 22, 2011 Ele faz a validação dos dois lados. Mesmo que o usuário desabilite a validação javascript ele continua a validar. E acho melhor você da um <br /> na frente de seu textbox e logo após adicione seu required. Compartilhar este post Link para o post Compartilhar em outros sites
nakid.mkt 0 Denunciar post Postado Março 31, 2011 Ele faz a validação dos dois lados. Mesmo que o usuário desabilite a validação javascript ele continua a validar. E acho melhor você da um <br /> na frente de seu textbox e logo após adicione seu required. Obrigado pela solução apresentada, mas adicionando <br> cai praticamente no mesmo problema. Agora eu não tenho mais tags vazias, mas fica uma linha em branco a mais no meu formulario por consequencia do <br>. Mesmo quando a mensagem de alerta não está aparente. Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Março 31, 2011 Eu geralmente faço assim: <table> <tr> <td> Nome: <asp:RequiredFieldValidator ID="rfvNome" runat="server" ErrorMessage="Campo não pode ser vazio." ControlToValidate="txtNome"></asp:RequiredFieldValidator> </td> <td> <asp:TextBox ID="txtNome" runat="server" Width="200px"></asp:TextBox> </td> </tr> </table> Compartilhar este post Link para o post Compartilhar em outros sites
nakid.mkt 0 Denunciar post Postado Março 31, 2011 Eu geralmente faço assim: <table> <tr> <td> Nome: <asp:RequiredFieldValidator ID="rfvNome" runat="server" ErrorMessage="Campo não pode ser vazio." ControlToValidate="txtNome"></asp:RequiredFieldValidator> </td> <td> <asp:TextBox ID="txtNome" runat="server" Width="200px"></asp:TextBox> </td> </tr>) </table> É outra boa solução mas ainda sim estaria me adaptando a um comportamento do modulo, e eu queria que o módulo se ajustasse às minhas necessidades. No seu modo encontro um outro problema. Se eu precisar colocar dois Validadores, um de campo vazio e eu de expressão regular, por exemplo. Caso o campo for preenchido com algo que nao satisfaça minha expressão regular, a mensagem aparecerá com um grande espaço na frente que seria ocupado pelo texto do "campo vazio". Resumindo, os validadoes criam <span> e controla isso através do visibility: visible/hidden; enquanto que o ideal seria o controde por display:none; Compartilhar este post Link para o post Compartilhar em outros sites
Deise Vicky 1 Denunciar post Postado Maio 19, 2011 Cara, você pode fazer suas validações com javascript e colocar "spans" de mensagens de erro dentro de divs ocultas abaixo dos Componentes. Então, no momento da validação se o campo estiver vazio ou for inválido você mostra a div abaixo do campo, senão ela fica sempre invisível. Veja no exemplo: <script type="text/javascript"> function validar() { var valor = document.getElementById("<%=txtNome.ClientID %>").value; if (valor == "") { alert(valor); document.getElementById("spanValidator").innerHTML = "Campo obrigatório"; document.getElementById("validator").style.display = "block"; return false; } else { alert(valor); document.getElementById("spanValidator").innerHTML = ""; document.getElementById("validator").style.display = "none"; return true; } } </script> <table border="1"> <tr> <td> Nome: <asp:TextBox ID="txtNome" runat="server" Width="200px"></asp:TextBox> <div id="validator" style="display:none;"> <span id="spanValidator"></span> </div> </td> </tr> </table> <asp:Button ID="btnSubmit" runat="server" onclick="btnSubmit_Click" Text="Validar" OnClientClick="validar();" /> Talvez isso resolva seu problema, mas é algo nada usual e nem muito funcional. Talvez fosse melhor você tentar usar o RequiredFieldValidator e apresentar as mensagens de erro dentro do ValidationSummary. Neste caso você pode mostrar ao lado do TextBox que está sendo validado apenas um asterisco e a mensagem de erro no ValidationSummary: Segue um exemplo: <asp:ValidationSummary ID="pageValidator" runat="server" Enabled="true" ShowMessageBox="false" ShowSummary="true" /> <table border="1"> <tr> <td> Nome: <asp:TextBox ID="txtNomeAux" runat="server" Width="200px"></asp:TextBox> <asp:RequiredFieldValidator ID="rfvNome" runat="server" ControlToValidate="txtNomeAux" ErrorMessage="Campo Obrigatório" ForeColor="Red" Text="*"></asp:RequiredFieldValidator> </td> </tr> </table> Eu particularmente prefiro a segunda opção. Compartilhar este post Link para o post Compartilhar em outros sites