Jump to content
Rodrigo Vieira E da Silva

Elemento Accordion e modal não funciona

Recommended Posts

Bom dia a toda galera ninja em JS, tudo bem com vocês?

 

Estou com um problema que está me deixando de cabelo em pé, eu inserir o código abaixo em meu projeto mas ao executar o mesmo meu elemento accordion e 02 modais parou de funcionar, será que alguém pode me ajudar ou me dar a direção do caminho correto para que o mesmo volte a funcionar.

 

Segue código abaixo,.

function showUser(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","filtro.php?filtro="+str,true);
        xmlhttp.send();
    }
}

 

Share this post


Link to post
Share on other sites

Em princípio este código não estará relacionado com o modal e accordion. Verfica se há erros na consola do browser  (CTRL+Shift+J no Chrome).

Share this post


Link to post
Share on other sites

Segue o código do Accordion Abaixo:

var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
  acc[i].onclick = function() {
    this.classList.toggle("active");
    var panel = this.nextElementSibling;
    if (panel.style.maxHeight){
  	  panel.style.maxHeight = null;
    } else {
  	  panel.style.maxHeight = panel.scrollHeight + 'px';
    } 
  }
}

Código do Modal

 

//AJAX PARA O BOTÃO INSERIR
$(document).ready(function() {
/// Quando usuário clicar em salvar será feito todos os passo abaixo
$('#btnsalvar').click(function() {
    var dados = $('#frmcadastro').serialize();
    $.ajax({
        type: 'POST',
        //dataType: 'json',
        url: 'insert.php',
        async: true,
        data: dados,
        success: function(response) {
            location.reload();
        }
    });
    return false;
});

//MODAL DA JANELA DE INSERIR
$("a[rel=adicionar]").click(function(ev) {
        ev.preventDefault();

        var id = $(this).attr("href");
        var alturaTela = $(document).height();
        var larguraTela = $(window).width();

        //colocando o fundo preto
        $('.mascara').css({'width': larguraTela, 'height': alturaTela});
        $('.mascara').fadeIn(1000);
        $('.mascara').fadeTo("slow", 0.8);

        var left = ($(window).width() / 2) - ($(id).width() / 2);
        var top = ($(window).height() / 2) - ($(id).height() / 2);

        $(id).css({'top': top, 'left': left});
        $(id).show();
    });

    $(".mascara").click(function() {
        $(this).hide();
        $(".window").hide();
    });

    $('.fechar').click(function(ev) {
        ev.preventDefault();
        $(".mascara").hide();
        $(".window").hide();
    });

 });
//FIM DO MODAL DA JANELA DE INSERIR E DO AJAX PARA A INSERÇÃO DO REGISTRO 

//AJAX DO EDITAR E MODAL
$("a[rel=modal]").click(function(ev) {
	ev.preventDefault();

	var id = $(this).attr("href");
	var alturaTela = $(document).height();
	var larguraTela = $(window).width();

	$('.mascarae').css({'width': larguraTela, 'height': alturaTela});
	$('.mascarae').fadeIn(1000);
	$('.mascarae').fadeTo("slow", 0.8);

	var left = ($(window).width() / 2) - ($(id).width() / 2);
	var top = ($(window).height() / 2) - ($(id).height() / 2);

	$(id).css({'top': top, 'left': left});
	$(id).show();
});

$(".mascarae").click(function() {
	$(this).hide();
	$(".windowe").hide();
});

$('.fechar').click(function(ev) {
	ev.preventDefault();
	$(".mascarae").hide();
	$(".windowe").hide();
});
//FIM DO AJAX E DO MODAL EDITAR


// AJAX PARA EXCLUSÃO DE REGISTROS
$(document).ready(function() {
	$('.delete').click(function(){
		var element = $(this);
		var del_id = element.attr('id');
		var info = 'id=' + del_id;
			if(confirm('Você deseja excluir esse registro?')){
	 			$.ajax({
	   				type: 'GET',
	   				url: 'delete.php',
	   				async: true,
	   				data: info,
	   				success: function(response) {
                    	location.reload();
                	}
	   			});
	  			//$(this).parents(".accordion").animate({ backgroundColor: "red" }, "slow")
	  			//.animate({ opacity: "hide" }, "slow");
	 		}
		return false;
	});
});
//FIM DO AJAX PARA EXCLUSÃO DE REGISTROS

/*AJAX PARA SELECIONAR O TIPO DE FILTRO*/

function showUser(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","filtro.php?filtro="+str,true);
        xmlhttp.send();
    }
}

Será que isso ajuda?

Share this post


Link to post
Share on other sites

Se estás a usar jQuery, porque não usas a função ajax para fazer o pedido?

Mais uma nota: tens dois eventos DOM ready no teu código, sendo que podes colocar tudo num só event handler.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By danielpinho
      Boa tarde pessoal,
       
      Estou desenvolvendo um sistema de pagamento via cartão de crédito que requer a execução de um ajax (request https) quando o usuário digita o número do cartão, a fim de capturar a bandeira do mesmo. O javascript deve enviar via ajax somente os 6 primeiros dígitos do cartão.
       
      A função já está funcionando parcialmente, da seguinte forma: quando o usuário digita o sexto dígito, o ajax faz a requisição e retorna o resultado.
       
      O problema é que quando o usuário continua digitando o restante do número do cartão, o ajax continua fazendo uma requisição a cada tecla pressionada, o que vai acabar sobrecarregando desnecessariamente o meu servidor.
       
      Eu sei que o ideal seria acionar a função somente quando a minha keyword tivesse lenght=6 (assim, ao continuar digitando a função não seria acionada), porém tem pessoas que copiam e colam o número do cartão de uma vez, e isso geraria um bypass na função...
       
      Além disso, o sistema deve ser capaz de reconhecer que houve uma eventual mudança nos 6 números digitados inicialmente, para fazer uma nova requisição ajax com esses números novos.
       
      A solução que pensei, em síntese, foi criar uma variável chamada "lastquery", inicialmente com o valor "000000". Digamos que os 6 dígitos pesquisados estivessem na variável "sixdigits". 
       
      Quando a requisição ajax fosse feita, a variável "lastquery" teria valor alterado para o mesmo valor de "sixdigits".
       
      E a requisição ajax ficaria condicionada da seguinte forma:   if (lasquery !== sixdigits) { executa ajax }.
       
      O problema é que não está dando certo. Ele continua executando normalmente, mesmo quando o valor de lastquery é o mesmo valor de sixdigits.
       
      Alguém mais inteligente do que eu consegue me ajudar? 
       
      Segue o código que não está funcionando perfeitamente. Reparem que fiz um alert para verificar o que estava dando errado, mas a mensagem que recebo no alert é sempre algo do tipo: "10100 is not equal to 10100". Não consigo entender porque isso acontece, já que lá em cima coloquei a condicionante !==.
       
      Obrigado!
       
      <form method="post"> <input type="text" name="ccnumber" id="ccnumber" value="" onkeyup="getcardbin()"> </form> <script> var lastquery = "000000"; function getcardbin() { var min_length = 6; var keyword = $('#ccnumber').val(); if (keyword.length >= min_length) { var justsix = keyword.substring(0, 6); if (justsix !== lastquery) { $.ajax({ url: '/getcardbin.cgi', type: 'POST', data: { 'tkn': 'token_interno', 'tid': 'token_interno', 'bin': justsix }, success:function(data){ $('#returnmsg').prepend(data); alert(justsix + ' is not equal to ' + lastquery); var lastquery = justsix; } }); } } } </script>  
    • By gust.php
      Fala pessoal.
       
      Quero fazer o seguinte: Tenho um campo select e um campo input. Quando eu selecionar um item do meu campo select, quero enviar o ID desse item, e o valor do campo input, que no caso é uma data, para um script PHP,  no PHP vou conferir uma situação e dizer se eu posso usar esse item ou não.
       
      Alguém pode me mostrar um exemplo?
       
      Obrigado.
    • By FabianoSouza
      Quero saber se é possível enviar formData e string na mesma requisição AJAX.
       
      $frmData = new FormData($form); $xhr.open('post', $form.getAttribute('action'), true); $xhr.setRequestHeader('content-type', 'text/plain;charset=utf-8'); $xhr.send($frmData); //******* quero saber se consigo enviar sting, além do objeto formData.  
    • By michael450
      Senhores, boa tarde.
       
      Estou com um probleminha... rss', preciso fazer a listagem de uma função da biblioteca "SPED-NFe"   na qual consulto quais as NFe que emitiram contra meu CNPJ, porém o ele executa toda a função e depois me trás o resultado, eu gostaria de trazer o resultado instantaneamente, como se fosse uma atualização segundo a segundo.
       
       
      Essas informações não são salvas em DB, é apenas para consulta.
      Se alguém puder ajudar serei muito grato,
       
      Abraço.
       
      Michael Douglas
    • By ricardonews
      olá pessoal, alguém ja teve dificuldade de logar no banco com um formulario de login feito pelo ajax quando a senha é criptografada?
      a minha está o sendo pelo md5 e quando deixo sem criptografia eu logo no banco.  Eu gostaria de logar com criptografia.
      vou deixar  a index e o arquivo que busca no banco de dados
      <!doctype html> <html> <?php require_once"config.php"; ?> <head> <title>Formulario de login</title> <style type="text/css"> html{ height:100%; background: linear-gradient(rgba(38, 128, 101, 0.9), rgba(52, 177, 140, 0.9)); } #div_login{ width:500px; margin:40px auto; position:relative; background-color: #ffffff; padding: 20px; border-radius: 5px; } #message{ width:100%; text-align:center; color:red; margin-bottom: 20px; } #div_login h1 { text-align: center; } #div_login input, #div_login textarea,#div_login a{ padding:10px; border:1px solid rgba(38, 128, 101, 0.9); border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; outline:none; box-sizing: border-box; width:100%; font:14px "Trebuchet MS", tahoma, arial; color:#090; margin-bottom:10px; } #div_login #but_submit,#div_login a { background-color: #27ae60; font-weight: bold; text-transform: uppercase; color: #ffffff; width: auto; margin: 0; padding: 10px 20px; } </style> <!--<link href="style.css" rel="stylesheet" type="text/css">--> <script src="jquery-3.2.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("#but_submit").click(function(){ var username = $("#meu_nome").val().trim(); var password = $("#minha_senha").val().trim(); if( username != "" && password != "" ){ $.ajax({ url:'pesquisar.php', type:'post', data:{username:username,password:password}, success:function(response){ var msg = ""; if(response == 1){ window.location = "home.php"; }else{ msg = "email e senhas invalidos!"; } $("#message").html(msg); } }); } }); }); </script> </head> <body> <div class="container"> <div id="div_login"> <h1>Login</h1> <div id="message"></div> <div> <input type="text" class="textbox" id="meu_nome" name="meu_nome" placeholder="email" /> </div> <div> <input type="password" class="textbox" id="minha_senha" name="minha_senha" placeholder="senhas"/> </div> <div> <input type="button" value="logar" name="but_submit" id="but_submit" /> <a href="inicio.php"><strong>Cadastrar</strong></a> </div> </div> </div> </body> </html> agora vem oque busca os dados no banco e é justamente essa parte que eu não entendo oque acontece.
      <?php require_once "config.php"; // AQUI É O PESQUISAR PHP $uname = mysqli_real_escape_string($con,$_POST['username']); $password = mysqli_real_escape_string($con,$_POST['password']); if ($uname != "" && $password != ""){ $sql_query = "SELECT count(*) as cntUser FROM usuarios WHERE email='".$uname."' and password='".$password."'"; $result = mysqli_query($con,$sql_query); $row = mysqli_fetch_array($result); $count = $row['cntUser']; if($count > 0){ $_SESSION['uname'] = $uname; echo 1; }else{ echo 0; } } desde já fico agradeço 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.