Eu tenho uma caixa de diálogo modal de auto-inicialização que quero mostrar inicialmente e, quando o usuário clica na página, ela desaparece. Eu tenho o seguinte:
$(function () {
$('#modal').modal(toggle)
});
<div class="modal" id='modal'>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Error:</h3>
</div>
<div class="modal-body">
<p>Please correct the following errors:</p>
</div>
</div>
</div>
O modal é exibido inicialmente, mas não fecha quando clicado fora do modal. Além disso, a área de conteúdo não está acinzentada. Como posso exibir inicialmente o modal e fechar depois que o usuário clica fora da área? E como posso deixar o fundo esmaecido como na demo?
jquery
twitter-bootstrap
modal-dialog
Nick B
fonte
fonte
$("#yourModal").modal()
ou$('.modal').modal()
?Respostas:
Coloque em
modal('toggle')
vez demodal(toggle)
fonte
para fechar o modal de autoinicialização, você pode passar 'hide' como opção para o método modal da seguinte maneira
Por favor, dê uma olhada no trabalho de violino aqui
O bootstrap também fornece eventos que você pode conectar à funcionalidade modal , como se você deseja acionar um evento quando o modal terminar de ser oculto ao usuário, você pode usar o evento hidden.bs.modal , para ler mais sobre métodos e eventos modais aqui em Documentação
Se nenhum dos métodos acima funcionar, dê um ID ao seu botão Fechar e acione o clique no botão Fechar.
fonte
toggle
mantém a sobreposição e não é uma solução. Você sempre deve usar umshow
ouhide
.ou
Deveria trabalhar.
Mas se nada mais funcionar, você pode chamar o botão Fechar modal diretamente:
fonte
$('#modal').modal('hide')
no entanto eu posso fechá-lo usando,$('#modal').modal('toggle')
mas que exibem uma barra de rolagem vertical após o fechamento. Então, para mim$('#modal').hide()
funcionou perfeitamente, mas eu quero saber se isso criaria algum problema? E eu estou codificando dentro,$('#modal .close').click()
então eu não acho que eu poderia usá-lo para fechar modal.isso funcionou para mim:
use este link modal perto
fonte
A execução dessa chamada via classe
($(".my-modal"))
não funcionará.fonte
Tente isto
fonte
este é muito bom e também funciona em angular 2
fonte
$('#modal').modal('toggle');
que não tem efeito.Meus cinco centavos neste é que não quero ter como alvo o modal de bootstrap com um ID e, como deve haver apenas um modal de cada vez, o seguinte deve ser suficiente para remover o modal, pois a alternância pode ser perigosa :
fonte
<body>
, têm classes adicionadas a eles que também precisam ser revertidas. A melhor resposta é usar o'hide'
métodoEm algumas circunstâncias, o erro de digitação pode ser o culpado. Por exemplo, verifique se você tem:
e não
Observe o "ss" duplo no segundo exemplo que fará com que o botão Fechar falhe.
fonte
Podemos fechar o pop-up modal das seguintes maneiras:
fonte
$('.modal.in').modal('hide');
use o código acima para ocultar o pano de fundo do modal se você estiver usando vários pop modal em uma página.
fonte
$('.modal').modal('hide');
servirá.fonte
fonte
$('#DeleteModal').modal('hide');
é relevante aqui?você pode usar;
fonte
Usar modal.hide ocultaria apenas o modal. Se você estiver usando sobreposição abaixo do modal, ele ainda estará lá. use a chamada de clique para realmente fechar o modal e remover a sobreposição.
fonte
Outra maneira de fazer isso é que primeiro você remove a classe modal-open, que fecha o modal. Em seguida, você remove a classe modal-backdrop que remove a tampa acinzentada do modal.
O código a seguir pode ser usado:
fonte
Adicione um botão no modal com
data-dismiss="modal"
e oculte o botão comdisplay: none
. Aqui está como seráAgora, quando você deseja fechar o modo modal Programaticamente, basta acionar um evento de clique nesse botão, que não é visível para o usuário
Em Javascript, você pode acionar o clique nesse botão da seguinte maneira:
fonte
Este código funcionou perfeitamente para eu fechar um modal (estou usando o bootstrap 3.3)
fonte
No meu caso, a página principal de onde o modal bootstrap foi acionado começou a não responder depois de usar o
$("#modal").modal('toggle');
modo, mas começou a responder da seguinte maneira:fonte
Isso funciona bem
No entanto, quando você tem vários modais empilhados uns sobre os outros, isso não é eficaz; portanto, isso funciona
fonte
Após algum teste, descobri que, para o modal de autoinicialização, é necessário aguardar um pouco antes de executar o
$(.modal).modal('hide')
após a execução$(.modal).modal('show')
. E descobri que, no meu caso, preciso de um intervalo de pelo menos 500 milissegundos entre os dois.Portanto, este é o meu caso de teste e solução:
fonte
Você pode ver esta referência, mas se esse link foi removido, leia esta descrição:
Chame um modal com o ID myModal com uma única linha de JavaScript:
Opções
As opções podem ser passadas por atributos de dados ou JavaScript. Para atributos de dados, anexe o nome da opção a data- , como em data-backdrop = "" .
Métodos
.modal (opções)
Ativa seu conteúdo como modal. Aceita um objeto de opções opcionais.
.modal ('alternar')
Alterna manualmente um modal. Retorna ao chamador antes que o modal seja realmente mostrado ou oculto (ou seja, antes do evento mostrado.bs.modal ou hidden.bs.modal ocorrer).
.modal ('show')
Abre manualmente um modal. Retorna ao chamador antes que o modal seja realmente mostrado (ou seja, antes que o evento mostrado.bs.modal ocorra).
.modal ('ocultar')
Oculta manualmente um modal. Retorna ao chamador antes que o modal seja realmente oculto (ou seja, antes do evento hidden.bs.modal ocorrer).
.modal ('handleUpdate')
Reajuste manualmente a posição do modal se a altura de um modal mudar enquanto estiver aberto (ou seja, no caso de uma barra de rolagem aparecer).
.modal ('descarte')
Destrói o modal de um elemento.
Eventos
A classe modal do Bootstrap expõe alguns eventos para se conectar à funcionalidade modal. Todos os eventos modais são disparados no próprio modal (ou seja, no **). Tipo Descrição
fonte
Além disso, você pode "clicar" em um 'x', que fecha a caixa de diálogo. Por exemplo:
$(".ui-dialog-titlebar-close").click();
fonte
No meu caso, usei um botão para mostrar o modal
Portanto, no meu código, para fechar o modal (que tem o id = 'my-modal-to-show') eu chamo essa função (no texto angular):
Se eu chamar $ (modalId) .modal ('hide'), não funcionará e não sei por que
PS .: no meu modal, eu também codifiquei esse elemento de botão com a classe .close
fonte
algumas vezes a solução não funciona, então é necessário remover adequadamente a classe e adicionar a exibição css: none manualmente.
fonte