0
So I have a button that is generated dynamically via AJAX.
I made an event in jQuery that when clicking the button, it runs one of the conditions that are inside the event (in IF and Else If).
However, the button only executes one event at a time. If I want to click the button again for him to hold another event, the event doesn’t happen unless I refresh the page.
Let me try to explain: I have a button that shows the Activity Status, when I click on another "Reopen Activity" button, the status is to change. And if I click the "Reopen Activity" button again, it is by Status being changed again. Only the change is only happening once.
What should happen:
You clicked on the "Reopen" button (Status went from Completed to Started), clicked on the "Reopen" button Again (Status went from Started to Pending).
To occur the above fact, you have to click "Reopen", Reload Page, and click "Reopen" again.
I’ll show you the code and a system image to see if you can get a sense.
$(document).on("click",".REABRIRATIVIDADE", function(e){
var sts = $(this).attr('name');
var codigo_empr = $(this).val();
//PASSAR BOTÃO DE CONCLUIDO PARA INICIADO
if(sts == "CONCLUIDO")
{
$("tr#"+codigo_empr+" button.reabriratividade").html("INICIADO");
//andrews//////////////////////////////
$("tr#"+codigo_empr+" button.reabriratividade").css('background-color','rgb(236, 200, 70)');
$("tr#"+codigo_empr+" button.reabriratividade").css('border','1px solid gray');
$("tr#"+codigo_empr+" button.reabriratividade").css('color','royalblue');
$("tr#"+codigo_empr+" button.reabriratividade").css('font-weight','bold');
$("tr#"+codigo_empr+" button.reabriratividade").css('border-radius','5px');
//andrews//////////////////////////////
$("tr#"+codigo_empr+" button.reabriratividade").attr('class', 'btn INICIADO');
var novo_status = "INICIADO";
var reabrir = reabrirAtividade(sts, novo_status, codigo_empr);
$('.REABRIRATIVIDADE').attr('name') = "INICIADO";
}
//PASSAR BOTÃO DE CONCLUIDO_VENCIDO PARA INICIADO_VENCIDO
else if(sts == "CONCLUIDO_VENCIDO")
{
$("tr#"+codigo_empr+" button.reabriratividade").html("INICIADO_VENCIDO");
$("tr#"+codigo_empr+" button.reabriratividade").css('background-color','rgb(196, 95, 49)');
$("tr#"+codigo_empr+" button.reabriratividade").css('border','1px solid gray');
$("tr#"+codigo_empr+" button.reabriratividade").css('color','white');
$("tr#"+codigo_empr+" button.reabriratividade").css('font-weight','bold');
$("tr#"+codigo_empr+" button.reabriratividade").css('border-radius','5px');
//andrews//////////////////////////////
$("tr#"+codigo_empr+" button.reabriratividade").attr('class', 'btn INICIADO_VENCIDO');
var novo_status = "INICIADO_VENCIDO";
var reabrir = reabrirAtividade(sts, novo_status, codigo_empr);
$('.REABRIRATIVIDADE').attr('name') = "INICIADO_VENCIDO";
}
//PASSAR BOTÃO DE INICIADO PARA PENDENTE
else if(sts == "INICIADO")
{
$("tr#"+codigo_empr+" button.reabriratividade").html("PENDENTE");
$("tr#"+codigo_empr+" button.reabriratividade").css('background-color','RoyalBlue');
$("tr#"+codigo_empr+" button.reabriratividade").css('border','1px solid gray');
$("tr#"+codigo_empr+" button.reabriratividade").css('color','white');
$("tr#"+codigo_empr+" button.reabriratividade").css('font-weight','bold');
$("tr#"+codigo_empr+" button.reabriratividade").css('border-radius','5px');
$("tr#"+codigo_empr+" button.reabriratividade").attr('class', 'btn PENDENTE');
var novo_status = "PENDENTE";
var reabrir = reabrirAtividade(sts, novo_status, codigo_empr);
$('.REABRIRATIVIDADE').attr('name') = "PENDENTE";
}
else if(sts == "INICIADO_VENCIDO")
{
$("tr#"+codigo_empr+" button.reabriratividade").html("VENCIDO");
$("tr#"+codigo_empr+" button.reabriratividade").css('background-color','rgb(165, 42, 42)');
$("tr#"+codigo_empr+" button.reabriratividade").css('border','px solid gray');
$("tr#"+codigo_empr+" button.reabriratividade").css('color','white');
$("tr#"+codigo_empr+" button.reabriratividade").css('font-weight: bold;','bold');
$("tr#"+codigo_empr+" button.reabriratividade").css('border-radius','5px');
$("tr#"+codigo_empr+" button.reabriratividade").attr('class', 'btn VENCIDO');
var novo_status = "VENCIDO";
var reabrir = reabrirAtividade(sts, novo_status, codigo_empr);
$('.REABRIRATIVIDADE').attr('name') = "VENCIDO";
}
});
function reabrirAtividade(sts, novo_status, codigo_empr)
{
$.ajax
({
url:"banco/pagina-minhas-tarefas/reabrir-atividades.php",
type:"POST",
data:{sts:sts, novo_status:novo_status, codigo_empr: codigo_empr},
async:false
}).done(function(data)
{
}).fail(function()
{
}).always(function()
{
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<?php
date_default_timezone_set('America/Sao_Paulo');
// CHAMANDO O ARQUIVO DE CONEXÃO AO BANCO
require_once("../conexao/conexao-com-banco.php");
//CONSULTA NO BANCO QUE MUDA O STATUS NO BANCO DE DADOS
session_start();
$usuario_reabrir_atividades = $_SESSION["nome"];
$sts = $_POST['sts'];
$novo_status = $_POST['novo_status'];
$codigo_empr = $_POST['codigo_empr'];
if($sts == "CONCLUIDO" OR $sts == "CONCLUIDO_VENCIDO")
{
$inserir_abrir_atividade = "UPDATE tbl_atividades SET STATUS = '{$novo_status}', DT_FIM = null WHERE codigo = $codigo_empr";
$resultado_inserir_abrir_atividade = mysqli_query($conecta, $inserir_abrir_atividade);
}
else if($sts == "INICIADO" OR $sts == "INICIADO_VENCIDO")
{
$inserir_abrir_atividade = "UPDATE tbl_atividades SET STATUS = '{$novo_status}', DT_INICIO = null WHERE codigo = $codigo_empr";
$resultado_inserir_abrir_atividade = mysqli_query($conecta, $inserir_abrir_atividade);
}
//SEGURANÇA - TESTANDO SE A QUERY FOI EXECUTADA
if(!$resultado_inserir_abrir_atividade)
{
die("Erro no Inserte do Reabrir Atividade");
}
?>
I hope I’ve been able to explain this nicely. Thank you!
The name of your button never changes, so it will always fall in the same condition as if. Maybe that’s what’s giving the impression that the event isn’t happening
– JrD
I made the inclusion of "Names" in the events. But it has not worked yet.
– Gato de Schrödinger