Ir para conteúdo
Fórum Script Brasil
  • 0

validando campos...no cliente


rutger2007

Pergunta

amigos...

Eu estou "brincando" com o JS, querendo validar um campo de nome antes que o sujeito envie o form... catei alguns exemplos aqui mas como sempre quero ir mais além do que já tem... facilitar a vida dos nossos clientes é uma busca constante... olhe o codigo...

<html>
<head>
<title>valida form</title>
<script language="JavaScript">

function validateNome(nome)
        {
            if (typeof(nome) != "string")
                return false;
            else if (!nome.match(/^[A-Za-z]$/))
                return false;
            return true;
        }

function checkNome(obj)
        {
            var message = (validateNome(obj.value)) ? " " : " Apenas letras!";
            document.getElementById("m_nome").innerHTML = message;
            
        }

</script>
</head>

<body>
<form name="cadastro" action="teste.php" method="post" >
<table >
   <tr>
        <td>nome:</td>
        <td><input type="text" size="40" name="nome" id="nome" onChange="checkNome(this);"><span id="m_nome" style="color: #c00;"></span></td>
    </tr>
    <tr>
        <td colspan="2">
          <div align="right">
               <input name="enviar" type="submit" value="enviar">
          </div>
        </td>
    </tr>
</table>

</form>
</body>
</html>
BEM... FUNCIONA... quando alguém coloca algo diferente de letras no campo NOME, ele alerta que só vai aceitar letras [é para evitar "|| a=a" uma prevenção ao SQL injection!!!] e ao mesmo tempo evita erros de digitação... mas eu queria que ele TRAVASSE no campo... eu tentei usar um DOCUMENT.CADASTRO.NOME.FOCUS(), - ver abaixo - mas ainda passa ao campo seguinte... eu quero OBRIGAR o cara a digitar direito... TEM COMO???
function checkNome(obj)
        {
            var message = (validateNome(obj.value)) ? " " : " Apenas letras!";
            document.getElementById("m_nome").innerHTML = message;
            document.cadastro.nome.focus();
        }

Editado por rutger2007
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Cara não teste aqui, mas acho que assim pode vir a funcionar

<script language="JavaScript">

function validateNome(nome){
    if (typeof(nome) != "string"){
        return false;
    } else {
        if (!nome.match(/^[a-zA-Z]+$/)){
            return false;
        }else{
            return true;
        }
    }
}
function checkNome(obj){
    var message = (validateNome(obj.value)) ? " " : " Apenas letras!";
    document.getElementById("m_nome").innerHTML = message;
    if(!validateNome(obj.value)){
        obj.focus();
        obj.select();
    } 
}
</script>

Link para o comentário
Compartilhar em outros sites

  • 0

OI FERCOSMIG ...

seguinte... testei, não funcionou... ai pensei que era porque havia feito este script aqui com apenas um input... na verdade ele é apenas parte de uma idéia de montar meu próprio sistema de validação de formulários... embrionário...

ai inclui OUTRO CAMPO, email... ele tb funciona bem, mas tem o mesmo defeito, passa ao campo seguinte DEPOIS DE DAR O ALERTA... e eu queria que o foco ficasse no mesmo campo que foi preenchido errado.. olha o codigo agora... depois que conseguir fazer ele funcionar como quero, vou ver se converto ele para uma forma mais compacta... mas por enquanto o que procuro é que IDENTIFICADO QUE O CAMPO ESTÁ FORA DE UMA DAS EXPRESSOES REGULARES, ELE ALERTA E VOLTA O PREENCHIMENTO PARA O MESMO CAMPO... continua o pepino!?

<html>
<head>
<title>valida form 2</title>
<script language="JavaScript">

function validateNome(nome)
    {
        if (typeof(nome) != "string")
            {
            return false;
            } 
           else 
               {
            if (!nome.match(/^[a-zA-Z]+$/))
                {
                return false;
                }
            else
                {
                return true;
                }
            }
    }

function validateEmail(email)
    {
        if (typeof(email) != "string")
            {
            return false;
            } 
        else 
            {
            if (!email.match(/^[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_.-][A-Za-z0-9]+)*\.\w{2}$/))
                {
                return false;
                }
            else
                {
                return true;
                }
            }
    }

       

function checkNome(obj)
        {
            var message = (validateNome(obj.value)) ? " " : " Apenas letras!";
            document.getElementById("m_nome").innerHTML = message;
            if(!validateNome(obj.value))
                {
                obj.focus();
                obj.select();
                }
        }

function checkEmail(obj)
        {
            var message = (validateEmail(obj.value)) ? " " : " Email Inválido!";
            document.getElementById("m_email").innerHTML = message;
            if(!validateEmail(obj.value))
                {
                obj.focus();
                obj.select();
                }
        }



</script>
</head>

<body>
<form name="cadastro" action="teste.php" method="post" >
<table >
   <tr>
        <td>nome:</td>
        <td><input type="text" size="40" name="nome" id="nome" onChange="checkNome(this);"><span id="m_nome" style="color: #c00;"></span></td>
    </tr>
    <tr>
  <td>email:</td>
  <td><input type="text" size="40" name="email" id="email" onChange="checkEmail(this);"><span id="m_email" style="color: #c00;"></span></td>
  </tr>
    <tr>
        <td colspan="2">
          <div align="right">
               <input name="enviar" type="submit" value="enviar">
          </div>
        </td>
    </tr>
    
</table>

</form>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal,

Isso parece que funciona como o rutger2007 pretende, comentei as alterações...

<html>
<head>
<title>valida form</title>
&lt;script language="JavaScript">

function validateNome(nome)
        {
            if (typeof(nome) != "string")
                return false;
            else if (!nome.match(/^[A-Za-z]$/))
                return false;
            return true;
        }

function checkNome(obj)
        {
            var message = (validateNome(obj.value)) ? " " : " Apenas letras!";
            document.getElementById("m_nome").innerHTML = message;
           // mudando o foco para o objeto 
            obj.focus();
        }

</script>
</head>

<body>
<!-- Inserido o onsubmit -->
<form name="cadastro" method="post" onsubmit="checkNome(document.getElementById('nome'));">
<table >
   <tr>
        <td>nome:</td>
       <!-- Modificado o evento de onchange para onblur --> 
        <td><input type="text" size="40" name="nome" id="nome" onblur="checkNome(this);"><span id="m_nome" style="color: #c00;"></span></td>
    </tr>
    <tr>
        <td colspan="2">
          <div align="right">
               <input name="enviar" type="submit" value="enviar">
          </div>
        </td>
    </tr>
</table>

</form>
</body>
</html>

Espero que ajude!

[]'s a todos!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...