Olá pessoal, boa tarde.
Aproveitando para divulgar que desenvolvo aplicações Web para diversos segmentos. Protótipo disponível em: http://lessandronp.homeip.net:8080/AutoPecas
Sistema totalmente desenvolvido utilizando o framework JavaServer Faces + Primefaces 2.1 + Hibernate + EJB + MySQL.
Abraços,
Att,
Lessandro
agosto 1, 2010
Desenvolvimento de Aplicações WEB para diversos segmentos
JSF 2.0 – Validação Client-Side com JQuery + JavaScript + PrimeFaces 2.1
Ola pessoal, boa tarde.
Estarei disponibilizando aqui uma forma de realizar validações client-side utilizando jquery com javascript manipulando o componente “h:message” que por padrão renderiza mensagens para validações server-side e campos requeridos de forma client-side no JSF.
Tendo as funções abaixo para remoção de máscara e validação do CPF vamos lá:
//Remove caracteres
function remove(str, sub) {
i = str.indexOf(sub);
r = "";
if (i == -1) return str;
r += str.substring(0,i) + remove(str.substring(i + sub.length), sub);
return r;
}
function removeMascara(object){
valor = recuperaValor(object);
semMascara = remove(valor, ".")
semMascara = remove(semMascara, "-")
semMascara = remove(semMascara, "/")
semMascara = remove(semMascara, "(")
semMascara = remove(semMascara, ")")
document.getElementById(object).value = semMascara;
return semMascara;
}
function validaCpf(cpf) {
var numeros, digitos, soma, i, resultado, digitos_iguais;
digitos_iguais = 1;
if (cpf.length < 11) {
return false;
}
for (i = 0; i < cpf.length - 1; i++)
if (cpf.charAt(i) != cpf.charAt(i + 1)) {
digitos_iguais = 0;
break;
}
if (!digitos_iguais) {
numeros = cpf.substring(0,9);
digitos = cpf.substring(9);
soma = 0;
for (i = 10; i > 1; i--)
soma += numeros.charAt(10 - i) * i;
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0))
return false;
numeros = cpf.substring(0,10);
soma = 0;
for (i = 11; i > 1; i--)
soma += numeros.charAt(11 - i) * i;
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(1))
return false;
return true;
}
else
return false;
}
Declaramos a função para validar o form com a jquery para manipulação do componente h:message do CPF.
<script type="text/javascript">
function validaForm() {
validacao = true;
// Cliente Pessoa Fisica
cpfSemMascara = removeMascara('iptCpf');
if (!validaCpf(cpfSemMascara)) {
// Colocando a mensagem no h:message com id="msgCpf"
jQuery('#msgCpf').css({'color' : 'red', 'font-size' : '11px', 'font-weight' : 'bold', 'font-style' : 'italic'});
jQuery('#msgCpf').text('CPF inválido. Tente novamente.');
validacao = false;
}
return validacao;
}
</script>
Agora aqui temos a caixa de texto responsável por receber o valor com máscara e o h:message por verificar as mensagens da mesma. Reparem que o ID é indispensável neste caso para ser manipulado posteriormente.
<h:outputLabel value="*" styleClass="fonteAlerta">
<h:outputLabel id="oplCpf" value="CPF:" />
</h:outputLabel>
<p:inputMask id="iptCpf" mask="999.999.999-99" value="#{managedBean.usuario.nuCpf}"
required="true" maxlength="14" size="15" requiredMessage="Informe o CPF." />
<h:message id="msgCpf" styleClass="fonteAlerta" for="iptCpf" showDetail="true" showSummary="false" />
Agora o botão responsável pela chamada da função por validar o formuário e verificar se o cpf é válido:
<p:commandButton id="cbtIncluir" value="#{msg['botao.incluir']}"
actionListener="#{managedBean.salvar}" onclick="return validaForm();" update="painelOndeEstaoOsCampos" />
Essa implementação foi de fundamental importância no meu caso, e espero que possa ajudar mais pessoas que também necessitem dessa questão.
Abraço a todos,
Lessandro