AA
Conflito entre script do Adianti e o feito no form
Pessoal, estou com um problema de conflito aqui com o jQuery.
Tenho um formulário com um TRadioGroup com duas opções. Eu configurei para que esse radio ficasse em forma de botão (botão despesa e botão receita). Fiz uma função jQuery no formulário para que quando o usuário clicar no botão despesa ele mudar para vermelho e quando clicar no outro botão (receita) mudar a cor para verde.
Inclui essa função no
O script funciona perfeitamente fora do framework, mas no Adianti ele está apresentando um comportamento estranho. É necessário que eu clique duas vezes no botão para que a função funcione como esperado.
Pelo
Alguém já passou por isso e sabe resolver?
Tenho um formulário com um TRadioGroup com duas opções. Eu configurei para que esse radio ficasse em forma de botão (botão despesa e botão receita). Fiz uma função jQuery no formulário para que quando o usuário clicar no botão despesa ele mudar para vermelho e quando clicar no outro botão (receita) mudar a cor para verde.
$js = "
$(document).ready(function(){
$('label.btn').click(function(){
var e = $('input[name=\'flag\']');
for (let i =0; i < e.length; i++)
{
if (e[i].checked)
{
console.log('O botão selecionado foi: '+e[i].value);
if (e[i].value == 'Despesa'){
e.parent()[i].className = 'btn btn-danger active';
e.parent()[1].className = 'btn btn-default';
}
else {
e.parent()[i].className = 'btn btn-success active';
e.parent()[0].className = 'btn btn-default';
}
}
}
});
});
";
TScript::create($js);
Inclui essa função no
__construct__
da classe TWindow
.
O script funciona perfeitamente fora do framework, mas no Adianti ele está apresentando um comportamento estranho. É necessário que eu clique duas vezes no botão para que a função funcione como esperado.
Pelo
console
percebi que quando clico no botão o Adianti executa também a função nativa do TRadioGroup e por isso acho que esteja dando conflito com minha função.
Alguém já passou por isso e sabe resolver?
Acho que o atributo "checked" está sendo atualizado após a sua função, dessa forma no if dentro da função ele ainda tem o valor anterior.
Tente capturar o valor selecionado antes do for e utilizar esse valor nas comparações posteriores:
Exatamente como você pensou, Nataniel.
Consegui resolver com a sua ajuda. Obrigadão. Eis a solução para quem tiver interesse:
Segue código em PHP para maior legibilidade: