Translate

terça-feira, 12 de janeiro de 2016

Validação condicional com validator-bootstrap


com radio button e bootstrapValidator

Olá Colegas,

Coloco abaixo o código de validação com bootstrapValidator, condicional.

Para isso usei radio button, onde clicando na opção UM tenho de informar apenas o campo UM, e obviamente, na opção DOIS sou obrigado a informar os campos UM e DOIS.

Para isso ocorrer precisei manipular os atributos do campo DOIS.

Bom como o código é curto e autoexplicativo não ha muito o que escrever basta olhar o mesmo abaixo.


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>BootstrapValidator Opcional</title>

    <link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.css"/>
    <link rel="stylesheet" href="dist/css/bootstrapValidator.css"/>

    <script type="text/javascript" src="vendor/jquery/jquery.min.js"></script>
    <script type="text/javascript" src="vendor/bootstrap/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="dist/js/bootstrapValidator.js"></script>
</head>
<body>
    <div class="container">
        <div class="row">
            <!-- form: -->
            <section>
                <div class="col-lg-8 col-lg-offset-2">
                    <div class="page-header">
                        <h2>Opcional</h2>
<h3>por Álvaro Grisolfi</h3>

                    </div>

                    <form id="formulario" method="post" class="form-horizontal" action="target.php">
                        <div class="form-group">
                            <label class="col-lg-3 control-label">Escolha</label>
                            <div class="col-lg-5">
                                <div class="radio">
                                    <label>
                                        <input type="radio" name="escolha" value="UM" /> Um campo
                                    </label>
                                </div>
                                <div class="radio">
                                    <label>
                                        <input type="radio" name="escolha" value="DOIS" checked  /> Dois campos
                                    </label>
                                </div>
                            </div>
                        </div>

<div id="div_campoUM">
                            <div class="form-group">
                                <label class="col-lg-3 control-label">UM</label>
                                <div class="col-lg-5">
                                    <input type="text" class="form-control" name="campoUM"  />
                                </div>
                            </div>                             
                        </div>

<div id="div_campoDOIS">
                            <div class="form-group">
                                <label id="esconder_label" class="col-lg-3 control-label">DOIS</label>
                                <div class="col-lg-5">
                                    <input type="text" class="form-control" name="campoDOIS"  />
                                </div>
                            </div>                             
</div>

                        <div class="form-group">
                            <div class="col-lg-9 col-lg-offset-3">
                                <button type="submit" class="btn btn-primary">Confirmar</button>
                            </div>
                        </div>
                    </form>
                </div>
            </section>
            <!-- :form -->
        </div>
    </div>

<script type="text/javascript">
$(document).ready(function() {
    $('#formulario').bootstrapValidator({
        message: 'Este valor não é valido',
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
             escolha: {
                 
                validators: {
                    notEmpty: {
                        message: 'Escolha UM ou DOIS'
                    }
                }
            } ,
            campoDOIS: {
                 
                validators: {
                    notEmpty: {
                        message: 'O Campo DOIS é obrigatorio'
                    }
                }
            } ,
campoUM: {
                 
                validators: {
                    notEmpty: {
                        message: 'O Campo UM é obrigatorio'
                    }
                }
            } 

             
        }
    });


     
    $('input[name="escolha"]').on('change', function() {
        var bootstrapValidator = $('#formulario').data('bootstrapValidator'),
            escolha_valor     = $(this).val();
 
 
if (escolha_valor != "UM"){ 
 
// mostra e habilita o campoDois e o label
$('#div_campoDOIS').find('.form-control').attr('disabled', false);
$('#div_campoDOIS').find('.form-control').removeClass('hide');
$('#div_campoDOIS').find('.form-control').removeClass('has-error');
$('#div_campoDOIS').find('.form-control').show();
$("#esconder_label").removeClass('hide');
$("#esconder_label").show();

bootstrapValidator.enableFieldValidators('campoDOIS', true);
$('#formulario').formValidation('validateField', 'campoDOIS');

}
else{
// desabilita e esconde o campoDois e o label
$('#div_campoDOIS').find('.form-control').attr('disabled', true);
$('#div_campoDOIS').find('.form-control').hide();
$('#div_campoDOIS').find('.form-control').toggleClass('hide');
$("#esconder_label").toggleClass('hide');
$("#esconder_label").hide();

// esconde a mensagem e o icone de erro
$( "#div_campoDOIS small").attr('data-bv-result', 'VALID');
$( "#div_campoDOIS small").attr('style', 'display: none;');
$( "#div_campoDOIS i").attr('class', 'form-control-feedback');



bootstrapValidator.enableFieldValidators('campoDOIS', false );
}
 
    });

     
});

</script>
</body>
</html>

Link download do projeto

Estou em um novo projeto pessoal, desenvolvimento de site/crm para imobiliárias e corretores, caso você tenha interesse em conhecer acesse o exemplo em www.minhacasa.floripa.br

segunda-feira, 4 de janeiro de 2016

Validar CPF com validator-bootstrap

Olá colegas, profissionais e amantes de programação.

Trago hoje um exemplo simples de validação de cpf com o uso do plugin validator bootstrap.

Coloco abaixo o código e umas pequenas explicações.

html


<form id="cpf_form" class="form-horizontal">
<div class="form-group">as
<div class="col-md-4">
 <label class="control-label" id="campo">CPF</label>
<input type="text" class="form-control" name="cpf" maxlength="14" onkeypress="formatar('###.###.###-##', this);" />
</div>
</div>
</form>

JS

mascara - colocar no head

<script> function formatar(mascara, documento){ var i = documento.value.length; var saida = mascara.substring(0,1); var texto = mascara.substring(i)   if (texto.substring(0,1) != saida){ documento.value += texto.substring(0,1); }   }</script>

validador

<script>
$(document).ready(function() {
   
    $('#cpf_form').bootstrapValidator({
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            cpf: {
                validators: {
                    callback: {
                        message: 'CPF Invalido',
                        callback: function(value) {
//retira mascara e nao numeros  
cpf = value.replace(/[^\d]+/g,'');    
if(cpf == '') return false; 
   
if (cpf.length != 11) return false;
// testa se os 11 digitos são iguais, que não pode.
var valido = 0; 
for (i=1; i < 11; i++){
if (cpf.charAt(0)!=cpf.charAt(i)) valido =1;
}
if (valido==0) return false;
     
//  calculo primeira parte  
aux = 0;    
for (i=0; i < 9; i ++)       
aux += parseInt(cpf.charAt(i)) * (10 - i);  
check = 11 - (aux % 11);  
if (check == 10 || check == 11)     
check = 0;    
if (check != parseInt(cpf.charAt(9)))     
return false;      
 
//calculo segunda parte  
aux = 0;    
for (i = 0; i < 10; i ++)        
aux += parseInt(cpf.charAt(i)) * (11 - i);  
check = 11 - (aux % 11);  
if (check == 10 || check == 11) 
check = 0;    
if (check != parseInt(cpf.charAt(10)))
return false;       
return true; 
 
                        }
                   }
                }
           }
        }
    });
});
</script>

Programa completo

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>BootstrapValidator demo</title>

    <link rel="stylesheet" href="../vendor/bootstrap/css/bootstrap.css"/>
    <link rel="stylesheet" href="../dist/css/bootstrapValidator.css"/>

    <!-- Include the FontAwesome CSS if you want to use feedback icons provided by FontAwesome -->
    <!--<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" />-->

    <script type="text/javascript" src="../vendor/jquery/jquery.min.js"></script>
    <script type="text/javascript" src="../vendor/bootstrap/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="../dist/js/bootstrapValidator.js"></script>
<script>
function formatar(mascara, documento){
var i = documento.value.length;
var saida = mascara.substring(0,1);
var texto = mascara.substring(i)
  
if (texto.substring(0,1) != saida){
documento.value += texto.substring(0,1);
}  
}
</script>

</head>
<body>
    <div class="container">
        <div class="row">
             
            <h1> Testa CPF </h1><br><br>
<h3> by Álvaro Grisolfi </h3>
  <form id="cpf_form" class="form-horizontal">
  
<div class="form-group">
<div class="col-md-4">
<label class="control-label" id="campo">CPF</label>
<input type="text" class="form-control" name="cpf" maxlength="14" onkeypress="formatar('###.###.###-##', this);" />
</div>
</div>
</form>
              
        </div>
    </div>

<script>
$(document).ready(function() {
   
    $('#cpf_form').bootstrapValidator({
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },
        fields: {
            cpf: {
                validators: {
                    callback: {
                        message: 'Wrong answer',
                        callback: function(value) {
 
cpf = value.replace(/[^\d]+/g,'');    
if(cpf == '') return false; 
   
if (cpf.length != 11) return false;
// testa se os 11 digitos são iguais, que não pode.
var valido = 0; 
for (i=1; i < 11; i++){
if (cpf.charAt(0)!=cpf.charAt(i)) valido =1;
}
if (valido==0) return false;
     
 
aux = 0;    
for (i=0; i < 9; i ++)       
aux += parseInt(cpf.charAt(i)) * (10 - i);  
check = 11 - (aux % 11);  
if (check == 10 || check == 11)     
check = 0;    
if (check != parseInt(cpf.charAt(9)))     
return false;       
 
aux = 0;    
for (i = 0; i < 10; i ++)        
aux += parseInt(cpf.charAt(i)) * (11 - i);  
check = 11 - (aux % 11);  
if (check == 10 || check == 11) 
check = 0;    
if (check != parseInt(cpf.charAt(10)))
return false;       
return true; 
 
                        }
                   }
                }
           }
        }
    });
});
</script>
</body>
</html>

Link do projeto aqui