Chamar uma função externa dentro de outra
Viva pessoal,
Estou a fazer um formulário básico mas com muitas validações e diferentes mensagens de alerta e bloquei em 2 questões:
1º - Verificar se o primeiro caractere de um campo de formulário é uma letra ou não e se não for mostrar um alerta.
2º - Chamar um JS externo dentro de um IF para validar o CPF.
Sei que o meu código deve parecer estranho, mas é necessário mostrar diferentes tipos de alertas para diferentes situações e eu não sei outra forma de o fazer.
Neste momento o meu código está assim...
Formulário:
<form onsubmit="return valida(this);">
Nome: <input type="text" name="nome" maxlength="50" size="50"><br><br>
Telefone: <input type="text" name="tel" maxlength="10" size="10"> (Formato: DDD+TELEFONE: 1122223333)<br><br>
CPF: <input type="text" name="cpf" maxlength="11" size="11"><br><br>
<input type="submit" onclick="valida()" value="Submeter">
</form>
Função de validação:
<script>
function valida(form) {
// Verifica se o campo NOME está vazio
if (form.nome.value=="") {
alert("O campo NOME está vazio.");
form.nome.focus();
return false;
}
// Verifica se o campo NOME tem no mínimo 5 caracteres
if (form.nome.value.length<5) {
alert("O campo NOME deve ter no mínimo 5 caracteres.");
form.nome.focus();
return false;
}
// Verifica se o campo NOME começa por uma letra
// if ( ) {
// alert("O campo NOME deve começar por uma letra.");
// form.nome.focus();
// return false;
// }
// Verifica se o campo TELEFONE está vazio
if (form.tel.value=="") {
alert("O campo TELEFONE está vazio.");
form.tel.focus();
return false;
}
// Verifica se o campo TELEFONE é numérico
if (isNaN(form.tel.value)){
alert("O campo TELEFONE só pode conter números.");
form.tel.value="";
form.tel.focus();
return false;
}
// Verifica se o campo TELEFONE tem 10 digitos
if (form.tel.value.length<10) {
alert("Preencha o TELEFONE corretamente (tem que possuir 10 dígitos numéricos).");
form.tel.focus();
return false;
}
// Verifica se o campo CPF está vazio
if (form.cpf.value=="") {
alert("O campo CPF está vazio.");
form.cpf.focus();
return false;
}
// Verifica se o campo CPF é numérico
if (isNaN(form.cpf.value)){
alert("O campo CPF só pode conter números.");
form.cpf.value="";
form.cpf.focus();
return false;
}
// Verifica se o campo CPF tem 11 digitos
if (form.cpf.value.length != 11) {
alert("Preencha o CPF corretamente (tem que possuir 11 dígitos numéricos).");
form.cpf.focus();
return false;
}
// Verifica se o campo CPF é válido
// if ( )){
// alert("O CPF indiado é inválido.");
// form.cpf.value="";
// form.cpf.focus();
// return false;// }
</script>
Arquivo JS que nomeei como (validarCPF.js) e que foi retirado do código fonte do site da Receita Federal e onde fiz uma pequena alteração nomes:
function ValidaCPF(numCPF) {
var Soma;
var Resto;
Soma = 0;
if (numCPF == "00000000000") return false;
for (i=1; i<=9; i++)
Soma = Soma + parseInt(numCPF.substring(i-1, i)) * (11 - i);
Resto = (Soma * 10) % 11;
if ((Resto == 10) || (Resto == 11)) Resto = 0;
if (Resto != parseInt(numCPF.substring(9, 10)) ) return false;
Soma = 0;
for (i = 1; i <= 10; i++)
Soma = Soma + parseInt(numCPF.substring(i-1, i)) * (12 - i);
Resto = (Soma * 10) % 11;
if ((Resto == 10) || (Resto == 11)) Resto = 0;
if (Resto != parseInt(numCPF.substring(10, 11) ) ) return false;
return true;
}
Pode não ser muito ortodoxo (acho eu) mas todo o código está a funcionar direitinho à excepção das validações que descrevi e que estão localizadas em:
// Verifica se o campo NOME começa por uma letra
// Verifica se o campo CPF é válido
Se alguém poder dar uma ajuda, agradeço.
e já agora, porque é que me está a surgir este erro na consola:
Uncaught TypeError: Cannot read property 'nome' of undefined
Reportando a esta linha de código:
if (form.nome.value=="") {
No código que postei anteriormente está na linha 7.
Discussão (5)
Carregando comentários...