Estou usando o alerta doce no formulário html que é pop-up ao clicar no botão, mas quando clico no botão ok do pop-up, o índice da guia não funciona depois disso e tenho que clicar em cada campo para preenchê-lo.
A mesma coisa acontece comigo.
Sim, acontece comigo também. Além disso, pressionar Enter para descartar o pop-up remove o foco da página e você não pode focar na página novamente sem clicar.
remover eventos de janela em doneFunction resolve isso.
swal({
title: "Are you sure?",
text: "You will not be able to recover this imaginary file!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
closeOnConfirm: false
}, function(){
// remove these events;
window.onkeydown = null;
window.onfocus = null;
swal("Deleted!", "Your imaginary file has been deleted.", "success");
});
@fxghqc remover manipuladores de eventos no retorno de chamada funciona para mim. Isso pode ser incluído no código principal para evitar esse bug?
+1
Quando isso vai ser corrigido?
+1
Existe algum fork desse bug com o qual eu possa trabalhar? Não tenho certeza de como usar o commit de @ xiaouze88 .
Também estou tendo problemas irritantes com relação a esse bug.
Este bug ainda existe. Você pode até vê-lo na página de demonstração principal do sweetalert ... http://t4t5.github.io/sweetalert/
Simplesmente clique no botão Try Me para o exemplo AJAX e então observe que a guia não funciona mais. Posso ver no depurador que window.onfocus não está sendo restaurado para afterwords nulos. Se eu definir manualmente, posso usar a guia novamente. Mas defini-lo como nulo na função de retorno de chamada passada para swal () NÃO funciona para mim. Eu o defini como nulo lá, mas algo interno a Sweetalert está definindo-o de volta antes que todo o processo termine. A invasão do depurador alguns segundos depois confirma isso.
Por favor conserte!
Também posso confirmar este comportamento. É intermitente, o melhor tipo de bug ...
Estou vendo o evento window.onkeydown
sendo vinculado à função mesmo depois que as caixas de diálogo foram fechadas ... e possivelmente antes de uma caixa de diálogo ter sido disparada.
Também estou enfrentando exatamente o mesmo problema. Quando o pop-up SweetAlert é fechado, as guias no formulário da página param de funcionar mesmo com tabindex
definido.
Farei um PR amanhã com uma correção para isso.
Na terça-feira, 3 de janeiro de 2017 às 21:15, Neel [email protected] escreveu:
Também estou enfrentando exatamente o mesmo problema. Quando o pop-up SweetAlert
for fechada, as guias no formulário da página param de funcionar mesmo com o tabindex definido.-
Você está recebendo isto porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/t4t5/sweetalert/issues/391#issuecomment-270197639 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AHWwZbRIQD1HLSs4WpN87HRyeBlvGgcuks5rOp43gaJpZM4FNSiU
.
Isso vai ser ótimo @EduardJS. Obrigado por isso.
Por enquanto, estou usando a solução de @JustinWinthers em outro thread:
(function (){
var _swal = window.swal;
window.swal = function(){
var previousWindowKeyDown = window.onkeydown;
_swal.apply(this, Array.prototype.slice.call(arguments, 0));
window.onkeydown = previousWindowKeyDown;
};
})();
@ Mr-Anonymous
atualizar
var _swalclose = window.swal.close;
var _swal = window.swal;
window.swal = function () {
var previousWindowKeyDown = window.onkeydown;
_swal.apply (this, Array.prototype.slice.call (argumentos, 0));
window.onkeydown = previousWindowKeyDown;
};
window.swal.close = function () {
_swalclose.apply (this);
};
Uau! Acabei de encontrar este tópico. Passei dias me perguntando por que minhas guias funcionam, mas não funcionam. Agora percebo que às vezes uso um sweetalert e por isso parou!
Alguém ainda está trabalhando em uma correção para isso e qual é a melhor solução para lidar com isso agora?
Edit: acabei de ver a mensagem sweetalert2 acima. Eu não sabia que havia outra versão, então vou tentar, mas ainda há muito trabalho a ser feito para migrar!
@elasticsteve Se você prestar atenção nos outros tópicos deste repositório, notará que este não é mais mantido.
Há outro repositório chamado
Se você ainda quiser usar esta versão, a única solução é esta. Esqueci de fazer um PR .. não tive tempo suficiente. A solução de @ edwin1217 é a que você deve
A solução de @ edwin1217 é quase a mesma que postei no tópico # 127 há algum tempo.
Obrigado a todos. Tentei transferir para SweetAlert2, mas tive que desistir. Não consegui fazer uma entrada de texto simples com closeOnConfirm: false
funcionar. Depois de perder 3 horas, voltei atrás e tentarei as sugestões acima.
@kosst Sim, sua solução é muito melhor, porque com a de @ edwin1217 a ação da tecla Enter padrão para OK e mensagens de erro (modais de texto de entrada) não funcionaria.
Aqui, novamente, o que funciona melhor para mim:
(function (){
var close = window.swal.close;
window.swal.close = function() {
close();
window.onkeydown = null;
};
})();
}
Eu sei que já faz muito tempo, mas você poderia fazer a gentileza de me explicar como posso chamar essa função como um todo em outra função? Onde devo colocar este trecho no controlador?
function(isConfirm){ //Function that triggers on user action.
if(isConfirm){
$scope.myData.splice(index,1);
SweetAlert.swal("Deleted!");
} else {
SweetAlert.swal("Your file is safe!");
}
mudança -
closeOnConfirm: false
PARA -
closeOnConfirm: true
é isso ... funcionou para mim
Comentários muito úteis
@kosst Sim, sua solução é muito melhor, porque com a de @ edwin1217 a ação da tecla Enter padrão para OK e mensagens de erro (modais de texto de entrada) não funcionaria.
Aqui, novamente, o que funciona melhor para mim: