Ir para conteúdo
manolegal

Limpar modal bootstrap ao fechar

Recommended Posts

Bom dia

Após selecionar a Pessoa em um formulário, tenho um botão para editar os dados desta pessoa em um Modal:

<span class="input-group-addon"><a href="#" id="btn_editar" class="glyphicon glyphicon-pencil" data-toggle="modal" data-target="#modal_edit_pessoa_red"></a></span>

Busco os dados no BD e preencho os inputs do modal:

<script type="text/javascript">
$(document).ready(function () {
    $('#btn_editar').click(function () {

        var id = $("#id_cont_hid").val();
        var id_cont= JSON.stringify(id);

  $.ajax({
    type: "POST",
    url: "minha_busca_bd?id=" + id,
    cache: false,
    data: "{'id':'" + id_cont + "'}",
    dataType: 'json',           
        }).done(function(retorno){
                    if (retorno.inserido == true) {
                      $('#md_edit_pes_cpf').val(retorno.dados.cpf); // Atualizo valor campo cpf
                      $("#md_edit_pes_cpf").mask("999.999.999-99"); // Adiciono máscara cpf
                    }
    ..........

Em relação aos dados está funcionando corretamente.

O problema é em relação às máscaras de entrada dos campos (cpf) que na primeira vez que for alterar os dados está vindo corretamente, porém, caso tente alterar novamente os dados da mesma pessoa, a máscara não funciona (não vem formatado corretamente).

Outro detalhe é  que o modal não está sendo resetado (limpo), principalmente após tentativa de edição e ser mostrada mensagem do arquivo PHP que faz a validação dos dados inseridos, uma vez que ao fechar o modal e ao reabri-lo novamente continua mostrando a mensagem de validação, o que eu não gostaria que acontecesse, mas que cada vez que o modal fosse fechado ou finalizado, limpassem os seus dados, para novamente serem carregados após clicar no botão de edição.

Partes do código que faço a validação do modal:

 

var serialize_dados = $('#form_mod_pes_edit_red').serialize();

		$.ajax({
			type: "POST",
			url: "arquivo_validar.php",
			data: serialize_dados,                
                        dataType: 'json',
                        encode: true,
                        cache: false,

                    }).done(function(retorno){
                                if (retorno.inserido == true) {
                                    $("#mensagem_edit_pes_red").html("Cadastro alterado com sucesso!");
                                    //auto.trigger('click');
                                    $('#form_mod_pes_edit_red').each (function(){ // Limpar campos do Form
                                        this.reset();
                                        $('#mensagem_edit_pes_red').html("");
                                        $('#form_mod_pes_edit_red')[0].reset();
                                    });
                                    
                                    setTimeout(function () {
                                        //$('#modal_edit_pessoa_red').on("hidden.bs.modal", function(){ $(this).removeData(); }); 
                                        $('#mensagem_edit_pes_red').html("");   // Limpa mensagens
                                        $('#modal_edit_pessoa_red').modal('hide')
                                        //$('#form_mod_pes_edit_red').on('hidden.bs.modal', function () {            
                                        //$('#modal_edit_pessoa_red').on('hidden.bs.modal', function(){ $(this).find('form')[0].reset(); });
                                    }, 2000); // 2seg
                                    
                                         $('#obs_ped').val("Endereço: "+ retorno.dados.endereco+ " Telefone: "+ retorno.dados.telefone);
                                }
                                 
                                else{
                                    if (retorno.erros){
                                        $('#mensagem_edit_pes_red').html("");
                                        for(var i=0;i<retorno.erros.length;i++) {
                                            $('#mensagem_edit_pes_red').append(retorno.erros[i] + "<br>");
                                        }
                                    }
                                    else{
                                        $("#mensagem_edit_pes_red").html("Não foi possível completar o cadastro. Tente novamente!");
                                    }
                                }
                                
                    });
		 

Já tentei de várias maneiras, porém não consigo encontrar a solução.

No botão fechar do modal também inseri vários códigos para tentar limpar o modal ao sair, porém não obtive sucesso.

Se alguém tiver alguma dica, agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Podes postar a estrutura HTML do modal?

Porque ao meu ver você está executando ajax em um determinado lugar dentro do modal.

Então é simples ao frecha-lo basta re-definir o html do local

 

local_do_ajax.innerHTML = null;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia. Obrigado pela ajuda.

<div class="modal fade" id="modal_cad_pessoa_red" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog modal-lg" role="document">
    <div class="modal-content">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Cadastrar Pessoa (RD)</h4>
    </div>
        <div class="modal-body">
            <div class="container-fluid" id="container">
            
                                <div class="row">
                        <div class="form-group col-md-5">
                            <label>Nome</label>
                            <input class="form-control form_input_recebe_foco" type="text" id="md_red_pes_nome" name="md_red_pes_nome" autofocus value="<?php echo $nome;?>" placeholder="Informe o Nome da Pessoa (Obrigatório)" required maxlength="50" title='Nome da Pessoa. Antes de cadastrar uma Pessoa, certifique-se de que ela realmente não está cadastrada.' onkeypress="return handleEnter(this, event)">
                        </div>     
  	
                        <div class="form-group col-md-3">
                            <label>Data Nascimento</label>
                            <input class="form-control form_input_recebe_foco" type="text" id="md_red_dt_nasc" name="md_red_dt_nasc" value="<?php echo $data_nascimento;?>" maxlength="10" placeholder="Data Nascimento" title='Data de Nascimento. Digite somente números.' onkeypress="return handleEnter(this, event)" onkeypress="formatar_mascara(this, '##/##/####')" onKeyUp="this.value=formateadata(this.value);">
                        </div>      
        
                        <div class="form-group col-md-3">
                            <label for="cpf">CPF</label>
                            <input class="form-control form_input_recebe_foco" type="text" id="md_red_cpf" name="md_red_cpf" pattern="\d{3}\.\d{3}\.\d{3}-\d{2}" value="<?php echo $_POST ["cpf"];?>" placeholder="Digite o CPF..." maxlength="14" autocomplete="off" title='CPF. Digite somente números. Formato final deve ser: 111.111.111-11' onkeypress="return handleEnter(this, event) && formatar_mascara(this, '###.###.###-##')" onblur="return validacpf()">
                        </div>
                    </div> <!-- /row -->

                </form>
                </div>
                 
            <div class="modal-footer">
                <button type="button" id="grav_md_pes_red" nome="grav_md_pes_red" class="btn btn-primary">Cadastrar</button> 
                <button type="button" class="btn btn-default" data-dismiss="modal" id="fechar_md_edit_pes_red">Fechar</button>    
            </div>
                
            </div>
        </div>     
       
    </div>
    </div>
</div>

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por unset
      Olá, estou enfrentando um problema e ainda não consegui pensar em uma solução, como resolver o problema, eu estou mudando meu sistema para utilizar janelas modal do bootstrap 5, cadastro e edição e funciona bem, porém ao adicionar um editor de texto wysiwyg tipo ckeditor 4, tinymce, summernot, e outros nenhum deles abre o conteudo no textarea, não estou conseguindo entender o motivo, se eu retiro a chamada dos editores os dados são exibidos corretamente, se eu deixo os dados não são carregados, mais os editores abrem normal.
       
      alguem já passou por isso, tem alguma luz? obrigado desde já por qualquer ajuda.


    • Por ILR master
      Salve galera.
       
      Vou publicar um evento e quero colocar um Cronômetro regressivo que mostre em tempo real os dias, horas e minutos que faltam para determinada data, tipo:.
      Faltam 5 dias, 12:30:00 para inauguração.
       
      Qdo chegar no dia, quero que apenas apareça uma mensagem.
       
      Alguém pode me ajudar?
    • Por ment0r
      Boa noite pessoal, tudo bem?
       
      Estou desenvolvendo um sistema simples com exibição de formulário via modal. Uma vez cadastrado o serviço (tabela possui apenas dois campos, id e nome), eles são exibidos numa tabela com um ícone que permite a alteração do nome.

       
      Eu clico no ícone e é chamado um modal que é gerado via ajax (pois são vários registros).
       

       
      Nesse modal é mostrado o serviço e uma vez alterado, o botão Salvar chama uma função que atualiza a tabela servico, concluindo a tarefa. Fiz o mesmo processo pra cadastrar o serviço, com a diferença de que o modal está presente na mesma página, ou seja, não é chamado via ajax.
       
      Eis os códigos:
      <a href="#" onclick="modalUpdate(<?= trim($array['id']) ?>)"> <i class='bx bx-edit'></i> </a> // Trecho onde eu chamo a função modalUpdate. Função btAltServico click:
      $('#btAltServico').click(function() { var inpnome = $('#nome'); var inpid = $('#id'); if (inpnome.val() == '') { swal("Atenção", "Por favor, preencha os campos obrigatórios", "warning"); if (inpnome.val() == '') { inpnome.css("border","2px solid #f94545"); } else { inpnome.css("border",""); } alert(inpnome); alert(inpid); } else { $.ajax({ url: '../inc/ajax/altServico.php', type: 'post', dataType: 'json', // pode ser html data: { nome : inpnome.val(), id : inpid.val() }, success: function(resposta){ if (resposta == 1) { inpnome.val(""); inpnome.css("border",""); swal("Sucesso", "Serviço alterado", "success"); } else { if (resposta == 0) { swal("Erro", "Serviço não alterado. Log de erro gerado.", "error"); } else { swal("Atenção", "Serviço já cadastrado", "warning"); } } } }) } });  
      E modalUpdate.php :
       
      <?php /* * altServico.php * * Script responsável pelo update de serviços na tabela servico * * Função chamada pelo arquivo ajax.js */ //if ($_POST) { require'../conn.php'; require'../../class/class.geral.php'; $geral = new Geral(); $nome = $_POST['nome']; $id = $_POST['nome']; $ativo = 1; // Verifica se o servico já foi cadastrado $sqlVer = "select nome from algo68_db_cliente.servico where nome = '".$nome."' and id <> ".$id.""; $queryVer = mysqli_query($conn, $sqlVer); $resultVer = mysqli_num_rows($queryVer); if ($resultVer > 0) { echo json_encode(2); // servico já cadastrado } else { // Update do servico $sql = "update algo68_db_cliente.servico set nome = '".$nome."', ativo = ".$ativo." where id = ".$id; $query = mysqli_query($conn, $sql); $result = mysqli_affected_rows($conn); if ($result > 0) { echo json_encode(1); // alterou o servico } else { $geral->logErro(date('d/m/Y|H:i:s'), @$_SERVER[REQUEST_URI], 'AlterarServico', mysqli_error($conn)); echo json_encode(0); // não alterou o servico } } //} ?> O problema é que quando clico no botão Salvar, não acontece nada - se eu colocar um alert qualquer na função click, só pra saber se está chegando, também não da nada. E está da mesma forma que o cadastro de serviço, que funciona perfeitamente.

      Bom, é isso pessoal, tentei ser o mais breve e especifico possível. Qualquer ajuda é bem vinda, obrigado a todos, desde já.
    • Por gersonab
      bom dia
      tenho uma aplicação onde gero um arquivo em pdf, gostaria de recuperar a url do pdf q foi criado, pois quando este é criado ele abre automaticamente e ou ja faz o download do mesmo, preciso da url para enviar para outros.
      <button type="button" class="btn btn-outline-primary" onclick="createPDF();">Imprimir</button> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/canvas2image@1.0.5/canvas2image.min.js"></script> <script language="javascript"> (function($){ $.fn.createPdf = function(parametros) { var config = { 'fileName':'html-to-pdf' }; if (parametros){ $.extend(config, parametros); } var orig = $(this); var widthOrig = $(orig).width(); $(orig).width(900); var quotes = document.getElementById($(orig).attr('id')); html2canvas(quotes, { onrendered: function(canvas) { var pdf = new jsPDF('p', 'pt', 'letter'); for (var i = 0; i <= quotes.clientHeight/900; i++) { var srcImg = canvas; var sX = 0; var sY = 900*i; var sWidth = 900; var sHeight = 900; var dX = 0; var dY = 0; var dWidth = 900; var dHeight = 900; window.onePageCanvas = document.createElement("canvas"); onePageCanvas.setAttribute('width', 900); onePageCanvas.setAttribute('height', 900); var ctx = onePageCanvas.getContext('2d'); ctx.drawImage(srcImg,sX,sY,sWidth,sHeight,dX,dY,dWidth,dHeight); var canvasDataURL = onePageCanvas.toDataURL("image/png", 1.0); var width = onePageCanvas.width; var height = onePageCanvas.clientHeight; if (i > 0) { pdf.addPage(612, 791); } pdf.setPage(i+1); pdf.addImage(canvasDataURL, 'PNG', 20, 40, (width*.62), (height*.62)); // Retirar o comentário caso queira ver como está sendo gerado o canvas. //document.body.appendChild(onePageCanvas); } pdf.save(config.fileName); $(orig).width(widthOrig); } }); }; })(jQuery); function createPDF() { $('#renderPDF').createPdf({ 'fileName' : '<?php echo $usercli['idocl']; ?>' }); }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.