Sweetalert: guia não está funcionando no formulário quando o alerta doce é pop up

Criado em 27 jun. 2015  ·  21Comentários  ·  Fonte: t4t5/sweetalert

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.

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:

(function (){
    var close = window.swal.close;
    window.swal.close = function() {
        close();
        window.onkeydown = null;
    };
})();

Todos 21 comentários

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;

    };

})();

REF: https://github.com/t4t5/sweetalert/issues/127

@ 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

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

xgqfrms-GitHub picture xgqfrms-GitHub  ·  4Comentários

mateuszjarzewski picture mateuszjarzewski  ·  4Comentários

jamieson99 picture jamieson99  ·  3Comentários

voodoo6 picture voodoo6  ·  4Comentários

fracz picture fracz  ·  4Comentários