none
Validação Simultânea de Campos com J-Query só funciona em componentes HTML? RRS feed

  • Pergunta

  • Olá, estou fazendo uma tela de cadastro de usuário para meu sistema e gostaria de implantar uma J-Query de validação de campos que achei muito boa, aqui segue o link:

    Live Validation

    O problema é que ela só funcionou em elementos do tipo Input Text(HTML) e meus campos são do tipo TextBox(ASP.NET).

    Por exemplo, nesse pequeno código, ela funciona:

      <input type="text" id="f1" />
     <script type="text/javascript">
       var f1 = new LiveValidation('f1');
       f1.add(Validate.Presence);
     </script>  

    Já, nesse exemplo, com componentes ASP.net, ela não funciona:

    <asp:TextBox ID="txtNome" CssClass="textLeft nome paddingText" runat="server" Width="200px" ForeColor="Gray"  Font-Names="Century Gothic" Text="Nome" Font-Size="Medium"></asp:TextBox> 
     <script type="text/javascript">
    		            var txtNome = new LiveValidation('txtNome');
    		            txtNome.add(Validate.Presence);
    </script>  

    No JQuery eu achei um trecho que específica o tipo do elemento, acho que talvez a solução seja mudar nessa parte:

    getElementType: function(){
          switch(true){
            case (this.element.nodeName.toUpperCase() == 'TEXTAREA'):
            return LiveValidation.TEXTAREA;
          case (this.element.nodeName.toUpperCase() == 'INPUT' && this.element.type.toUpperCase() == 'TEXT'):
            return LiveValidation.TEXT;
          case (this.element.nodeName.toUpperCase() == 'INPUT' && this.element.type.toUpperCase() == 'PASSWORD'):
            return LiveValidation.PASSWORD;
          case (this.element.nodeName.toUpperCase() == 'INPUT' && this.element.type.toUpperCase() == 'CHECKBOX'):
            return LiveValidation.CHECKBOX;
          case (this.element.nodeName.toUpperCase() == 'INPUT' && this.element.type.toUpperCase() == 'FILE'):
            return LiveValidation.FILE;
          case (this.element.nodeName.toUpperCase() == 'SELECT'):
            return LiveValidation.SELECT;
            case (this.element.nodeName.toUpperCase() == 'INPUT'):
            	throw new Error('LiveValidation::getElementType - Cannot use LiveValidation on an ' + this.element.type + ' input!');
            default:
            	throw new Error('LiveValidation::getElementType - Element must be an input, select, or textarea!');
          }

    Já tentei mudar o "default:" para que ele retorne o "LiveValidation.TEXT" só para ver se funcionava, mas não deu certo. Alguém ja usou essa J-Query ou fez algo parecido? Obrigado desde já.

    Att,

    Daniel Camboim

    quarta-feira, 9 de maio de 2012 21:21

Todas as Respostas

  • Daniel, Boa noite

    Tende colocar no seu componente aspx a propriedade ClientIDMode setada como Static

    ficando assim ClientIDMode="Static"


    Bruno Viegas | Desenvolvedor Web | Desenvolvedor Dynamics CRM

    quarta-feira, 9 de maio de 2012 21:28
  • Daniel você pode tentar fazer oque o Brunoi disse, ou veja esta possivel solução:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
    
    <!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>
        <title></title>
        <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js" type="text/javascript"></script>
        <script src="http://livevalidation.com/javascripts/src/1.3/livevalidation_standalone.compressed.js"
            type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                var textBox = $('[id*=txtTeste]').attr("id");
                var myField = new LiveValidation(textBox);
                myField.add(Validate.Format, { pattern: /^teste$/i });
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        Digite teste
        <br />
        <asp:TextBox runat="server" ID="txtTeste" />
        </form>
    </body>
    </html>

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    quinta-feira, 10 de maio de 2012 13:15