Jquery and PHP validation does not work

-4

Colleagues

I have this form:

<form method="post" name="form" id="formulario" action="javascript:func()">
                    <label>Razão social</label>
                    <span class="color-red">*</span>
                    <div class="row margin-bottom-20">
                        <div class="col-md-8 col-md-offset-0">
                            <input name="RazaoSocial" id="razaoSocial" class="form-control" type="text">
                        </div>
                    </div>

                    <label>CNPJ<span class="color-red">*</span></label>
                    <div class="row margin-bottom-20">
                        <div class="col-md-8 col-md-offset-0">
                            <input name="CNPJ" id="cnpj" class="form-control" type="text">
                        </div>
                    </div>

                    <label>Telefone comercial<span class="color-red">*</span></label>
                    <div class="row margin-bottom-20">
                        <div class="col-md-8 col-md-offset-0">
                            <input name="FoneComercial" id="foneComercial" class="form-control" type="text">
                        </div>
                    </div>

                    <label>Telefone celular<span class="color-red">*</span></label>
                    <div class="row margin-bottom-20">
                        <div class="col-md-8 col-md-offset-0">
                            <input name="FoneCelular" id="foneCelular" class="form-control" type="text">
                        </div>
                    </div>

                    <label>Nome do responsável<span class="color-red">*</span></label>
                    <div class="row margin-bottom-20">
                        <div class="col-md-8 col-md-offset-0">
                            <input name="NomeResponsavel" id="nomeResponsavel" class="form-control" type="text">
                        </div>
                    </div>

                    <label>Mensagem<span class="color-red">*</span></label>
                    <div class="row margin-bottom-20">
                        <div class="col-md-8 col-md-offset-0">
                            <textarea name="Mensagem" id="mensagem" rows="8" class="form-control"></textarea>
                        </div>
                    </div>                  
                    <p><button type="submit" name="btnEnviar" class="btn btn-primary">Enviar</button></p>
                </form>

I'm using the bootstrap, so I call the function this way:

<script type="text/javascript" src="assets/js/jquery.min.js" ></script>
<script type="text/javascript" src="assets/js/bootstrap.min.js" ></script>

   <script type="text/javascript" language="javascript">
$(function($) {
    // Quando o formulário for enviado, essa função é chamada
    $("#formulario").submit(function() {
        // Colocamos os valores de cada campo em uma váriavel para facilitar a manipulação
        var razaoSocial = $("#razaoSocial").val();
        var cnpj = $("#cnpj").val();
        var foneComercial = $("#foneComercial").val();
        var foneCelular = $("#foneCelular").val();
        var nomeResponsavel = $("nomeResponsavel").val();
        var mensagem = $("mensagem").val();

        // Exibe mensagem de carregamento
        $("#status").html("<img src='imagens/ajax-loader.gif' alt='Enviando' />");
        // Fazemos a requisão ajax com o arquivo envia.php e enviamos os valores de cada campo através do método POST
        $.post('enviar.php', {razaoSocial: razaoSocial, cnpj: cnpj, foneComercial: foneComercial, foneCelular: foneCelular, nomeResponsavel: nomeResponsavel, mensagem: mensagem }, function(resposta) {
                // Quando terminada a requisição
                // Exibe a div status
                $("#status").slideDown();
                // Se a resposta é um erro
                if (resposta != false) {
                    // Exibe o erro na div
                    $("#status").html(resposta);
                } 
                // Se resposta for false, ou seja, não ocorreu nenhum erro
                else {
                    // Exibe mensagem de sucesso
                    $("#status").html("<span style=\"color:#006400\">Mensagem enviada com sucesso!</span>");
                    // Coloca a mensagem no div de mensagens
                    // Limpando todos os campos
                    $("#formulario").reset();
                }
        });
    });
});
</script>

And finally, PHP:

<?php

if(filter_input(INPUT_POST,"btnEnviar")){
    if(strlen(filter_input(INPUT_POST,"RazaoSocial")) < 5){
        echo "A razão social não pode ser inferior a 5 caracteres";
    }else if(strlen(filter_input(INPUT_POST,"CNPJ")) < 18){
        echo "CNPJ inválido";
    }else if(strlen(filter_input(INPUT_POST,"FoneComercial")) < 13){
        echo "Telefone comercial inválido"; 
    }else if(strlen(filter_input(INPUT_POST,"FoneCelular")) < 14){
        echo "Telefone celular inválido";
    }else if(strlen(filter_input(INPUT_POST,"NomeResponsavel")) < 5){
        echo "O nome do responsável não pode ser inferior a 5 caracteres";
    }else if(strlen(filter_input(INPUT_POST,"Mensagem")) < 5){
        echo "A mensagem não pode ser inferior a 5 caracteres";
    }else{
        //
    }

}

?>

Even sending with the empty fields, the message "Message sent successfully" appears, that is, it is not validating ...

    
asked by anonymous 18.03.2016 / 19:52

1 answer

1

Addendums to help you:

  • search the web for javascript validations for CNPJ
  • use makedinput to include masquerade in the fields
  • Differentiate object names for ease of handling
  • Always validate on the client side and on the server, this prevents the smart guys from detonating your database
  • Always treat information received from the form (on your.php page) whenever possible by removing apostrophes (') and / or special characters if they are not needed
  • How do you use bootstrap, see in the API how to improve warnings / error messages because the alert I put goes out of the way
  • NOTE: To see it working, comment out the whole / * $ .post () * /, blz code.

  • In the page.php, I believe it is better to receive the information in variables to later use in validations, CRUD, etc ...

I hope I have helped, please read the commented tips I put

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>slider</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script><scriptsrc="js/jquery.maskedinput.min.js"></script>
        <script>
            $(document).ready(function(){
                // Quando o formulário for enviado, essa função é chamada
                $("#formulario").submit(function() {
                    // Colocamos os valores de cada campo em uma váriavel para facilitar a manipulação
                    // Procure utilizar o nome das variaveis diferentes do nomes dos objetos isso facilita muito        
                    // Outro ponto que você esqueceu de colocar foi a  #(tralha) para referenciar os campos nomeResponsavel e mensagem
                    var RazaoSocial = $("#razaoSocial");
                    var Cnpj = $("#cnpj");
                    var FoneComercial = $("#foneComercial");
                    var FoneCelular = $("#foneCelular");
                    var NomeResponsavel = $("#nomeResponsavel");
                    var Mensagem = $("#mensagem");
                    var btn = $("#btnEnviar");
                    // Desativa o botão para evitar vários clicks
                    btn.attr({'disabled':true});

                    // length = indica o tamanho/quantidade
                    if( RazaoSocial.val().length < 5){
                        alert("A razão social não pode ser inferior a 5 caracteres");
                        RazaoSocial.focus(); // aponta/foca no campo para ser corrigido
                        btn.attr({'disabled':false}); // restaura o botão para permitir novo envio de dados
                        return false;
                    }else if(Cnpj.val().length < 18){
                        alert("CNPJ inválido");
                        Cnpj.focus();
                        btn.attr({'disabled':false});
                        return false;
                    }else if(FoneComercial.val().length < 13){
                        alert("Telefone comercial inválido"); 
                        FoneComercial.focus();
                        btn.attr({'disabled':false});
                        return false;
                    }else if(FoneCelular.val().length < 14){
                        alert("Telefone celular inválido");
                        FoneCelular.focus();
                        btn.attr({'disabled':false});
                        return false;
                    }else if(NomeResponsavel.val().length < 5){
                        alert("O nome do responsável não pode ser inferior a 5 caracteres");
                        NomeResponsavel.focus();
                        btn.attr({'disabled':false});
                        return false;
                    }else if(Mensagem.val().length < 5){
                        alert("A mensagem não pode ser inferior a 5 caracteres");
                        Mensagem.focus();
                        btn.attr({'disabled':false});
                        return false;
                    }else{
                        btn.attr({'disabled':true}); // persiste desativado até a conclusão do envio das informações
                        // Exibe mensagem de carregamento
                        $("#status").html("<img src='imagens/ajax-loader.gif' alt='Enviando' />");
                        // Fazemos a requisão ajax com o arquivo envia.php e enviamos os valores de cada campo através do método POST

                        //Para não ocorrer problemas no envio das informações utilizo sempre
                        // conteudo : "\'" + Conteudo + "\'"
                        // inteiro : Inteiro
                        // ou seja para todo campo contendo texto ou caracteres especiais envio desta forma "\'" + Conteudo + "\'"
                        // na página que irá receber as informações é necessário eliminar com replace os apóstrofos(')                  

                        $.post('enviar.php', { 
                            razaoSocial     : "\'" + RazaoSocial.val() + "\'",
                            cnpj            : "\'" + Cnpj.val() + "\'", 
                            foneComercial   : "\'" + FoneComercial.val() + "\'", 
                            foneCelular     : "\'" + FoneCelular.val() + "\'", 
                            nomeResponsavel : "\'" + NomeResponsavel.val() + "\'",
                            mensagem        : "\'" + Mensagem.val() + "\'" 
                        }, function(resposta) {
                            // Quando terminada a requisição // Exibe a div status
                            $("#status").slideDown();
                            // Se a resposta é um erro
                            if (resposta != "false") { // Exibe o erro na div
                                $("#status").html(resposta);
                            } 
                            else {// Se resposta for false, ou seja, não ocorreu nenhum erro // Exibe mensagem de sucesso
                                $("#status").html("<span style=\"color:#006400\">Mensagem enviada com sucesso!</span>");
                                // Coloca a mensagem no div de mensagens // Limpando todos os campos

                                // Creio que não funcione corretamente o reset dependendo da versão do jquery
                                $("#formulario").reset();
                                // para resolver isso creio ser melhor fazer o simples
                                //$('#razaoSocial,#cnpj,#foneComercial,#foneCelular,#nomeResponsavel,#mensagem').val('');
                                btn.attr({'disabled':false}); // ativo o botão para novo envio
                            }
                        });                     
                    }
                });
            });
        </script>
    </head>
    <!-- Para evitar colocar mais informação que o campo no banco suporta sempre utilize nos campos input o atributo maxlength -->
    <body>
        <form method="post" name="form" id="formulario" action="javascript:func()">
                    <label>Razão social</label>
                    <span class="color-red">*</span>
                    <div class="row margin-bottom-20">
                        <div class="col-md-8 col-md-offset-0">
                            <input name="razaoSocial" id="razaoSocial" class="form-control" type="text" maxlength="250">
                        </div>
                    </div>

            <label>CNPJ<span class="color-red">*</span></label>
            <div class="row margin-bottom-20">
                <div class="col-md-8 col-md-offset-0">
                    <input name="cnpj" id="cnpj" class="form-control" type="text" maxlength="18">
                </div>
            </div>

            <label>Telefone comercial<span class="color-red">*</span></label>
            <div class="row margin-bottom-20">
                <div class="col-md-8 col-md-offset-0">
                    <input name="foneComercial" id="foneComercial" class="form-control" type="text" maxlength="13">
                </div>
            </div>

            <label>Telefone celular<span class="color-red">*</span></label>
            <div class="row margin-bottom-20">
                <div class="col-md-8 col-md-offset-0">
                    <input name="foneCelular" id="foneCelular" class="form-control" type="text" maxlength="14">
                </div>
            </div>

            <label>Nome do responsável<span class="color-red">*</span></label>
            <div class="row margin-bottom-20">
                <div class="col-md-8 col-md-offset-0">
                    <input name="nomeResponsavel" id="nomeResponsavel" class="form-control" type="text" maxlength="250">
                </div>
            </div>

            <label>Mensagem<span class="color-red">*</span></label>
            <div class="row margin-bottom-20">
                <div class="col-md-8 col-md-offset-0">
                    <textarea name="mensagem" id="mensagem" rows="8" class="form-control"></textarea>
                </div>
            </div>                  
            <p><input type="submit" name="btnEnviar" id="btnEnviar" class="btn btn-primary" value="Enviar" /></p>
        </form>
    </body>
</html>
    
19.03.2016 / 15:11