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

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:
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
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
- Sugerido como Resposta Olavo Oliveira NetoModerator quinta-feira, 10 de maio de 2012 16:58
-
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/- Sugerido como Resposta Olavo Oliveira NetoModerator quinta-feira, 10 de maio de 2012 16:58
- Editado Vitor Mendes quinta-feira, 23 de agosto de 2012 17:09