Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, estou com o seguinte problema, tenho um formulário que não pode ser submetido, não posso usar um action, mas preciso fazer com que o submit possa ocorrer, sem finalizar, mas preciso executar um callback no meio do caminho e não estou conseguindo...
Estou tilizando o http://bootboxjs.com/ e nele tem a função customizável, que é a que estou utilizando:
bootbox.dialog({
message: "I am a custom dialog",
title: "Custom title",
buttons: {
success: {
label: "Success!",
className: "btn-success",
callback: function() {
Example.show("great success");
}
}
}
});
O que preciso: executar o callback do botão, só que esse callback é focar o campo caso ele esteja vazio:
jQuery(function($) {
$('#form').submit(function() {
// Se não preencher o campo, quero exibir um alert mas não é o alert padrão...
if($('#campo').val() == '') {
bootbox.dialog({
message: "Preencha o campo!",
title: "Erro",
buttons: {
danger: {
label: "Fechar",
className: "btn-danger",
callback: function() {
$('#campo').focus(); // <-- Preciso que ISSO seja executado!
}
}
}
});
}
return false; // Não posso permitir o submit do form...
});
});Abraço!
Algum outro evento está cancelando o focus: http://jsfiddle.net/gmrk7o11/3/
Apenas adiciones um simples setTimeout de 1 milésimo de segundo e o focus funcionou.
Simplesmente, bizarro.
Olá fedrizze, ontem eu fiz isso mesmo, foi a única forma que consegui, retardando o disparo do focus em 50 milissegundos... Bizarro mesmo, mas a pergunta é: existe outra forma de se fazer isso?
Valeu pela dica!
Cara,
jQuery("#name").on('click mousedown mouseup focus keydown change blur', function(e) {
console.log(e);
});
Ele está disparando um evento de blur e um de focus, mas por alguma maneira o blur que é disparado antes está cancelando o focus.
Infelizmente, até o momento não sou alto suficiente para resolver isto ;/. Perdão :(
Se eu conseguir encontrar algo, eu avisarei.
Se você encontrar algo, poderia postar a solução aqui?!
edit
---------
Cara, o blur está sendo lançado antes, mas o blur está sendo executado depois:
blur : timeStamp: 1416002962204
focus : timeStamp: 1416002962163
Vai entender...
Pessoal, agora acho que fica mais fácil de entender o problema... O que preciso é focar o campo após o fechamento da janela modal. Vejam no link abaixo:
:seta: http://jsfiddle.net/gmrk7o11/
Estou utilizando Bootstrap e Bootbox.js
Se alguém puder me ajudar... Vejam que ao clicar no botão "OK" da janela modal, o campo não é focado de jeito nenhum... Como fazer isso acontecer?
Abraço!