Portanto, estou usando este código para abrir outra janela modal em uma janela modal aberta atualmente:
<a onclick=\"$('#login').modal('hide');$('#lost').modal('show');\" href='#'>Click</a>
O que acontece é que por cerca de 500ms a barra de rolagem se duplicará. Acho que porque o modal atual ainda está desaparecendo. No entanto, parece muito desagradável e gaguejante.
Eu apreciaria quaisquer sugestões para resolver este problema.
Além disso, construir isso em um evento onclick não é profissional?
Estou trabalhando com o bootstrap versão 3.0.
Edit: Acho que é necessário reduzir o tempo de desvanecimento de um modal. Como isso é possível?
Respostas:
data-dismiss
faz a janela modal atual fechardata-toggle
abre um novo modal com ohref
conteúdo dentro deleou
deixe-nos saber se funciona.
fonte
data-dismiss
faz. Ele fecha a janela atual e abre uma nova. Você pode postar seu código embootply
oujsfiddle
?.modal { overflow-y: auto }
resolve o problema de rolagem do BS4.Minha solução não fecha o modal inferior, mas realmente se acumula em cima dele. Ele preserva o comportamento de rolagem corretamente. Testado no Bootstrap 3. Para que os modais sejam empilhados conforme o esperado, você precisa ordená-los em sua marcação Html do menor ao maior.
ATUALIZAÇÃO: quando você empilhar modais, todos os cenários aparecem abaixo do modal inferior. Você pode corrigir isso adicionando o seguinte CSS:
Isso dará a aparência de um fundo modal abaixo do modal visível mais acima. Dessa forma, ele esmaece seus modais inferiores.
fonte
Para abrir outra janela modal em uma janela modal aberta no momento,
você pode usar bootstrap modal
bootstrap-modal DEMO
fonte
tente isso
fonte
Você pode realmente detectar quando o modal antigo fecha chamando o
hidden.bs.modal
evento:Para obter mais informações: http://getbootstrap.com/javascript/#modals-events
fonte
Atualização para 2018 - Usando Bootstrap 4
Descobri que a maioria das respostas parece ter muito jQuery desnecessário. Para abrir um modal de outro modal pode ser feito simplesmente usando os eventos que o Bootstrap fornece, como
show.bs.modal
. Você também pode querer algum CSS para lidar com as sobreposições de fundo. Aqui estão os 3 modais abertos de outros cenários ...Abrir modal a partir de outro modal (manter o 1º modal aberto)
Um problema potencial neste caso é que o pano de fundo do 2º modal oculta o 1º modal. Para evitar isso, faça o segundo modal
data-backdrop="static"
e adicione algum CSS para corrigir os Z-indexes dos cenários ...https://www.codeply.com/go/NiFzSCukVl
Abrir modal a partir de outro modal (fechar 1o modal)
Isso é semelhante ao cenário acima, mas como estamos fechando o primeiro modal quando o segundo é aberto, não há necessidade de corrigir o CSS do pano de fundo. Uma função simples que manipula o 2º
show.bs.modal
evento modal fecha o 1º modal.https://www.codeply.com/go/ejaUJ4YANz
Abrir modal dentro de outro modal
O último cenário de múltiplos modais está abrindo o 2º modal dentro do 1º modal. Neste caso, a marcação para o 2º é colocada dentro do 1º. Nenhum CSS ou jQuery extra é necessário.
https://www.codeply.com/go/iSbjqubiyn
fonte
.modal-backdrop.show + .modal.show { z-index: 1052 !important; } .modal-backdrop.show + .modal.show + .modal-backdrop.show { z-index: 1051 !important; }
Modais no modal:
fonte
Trabalhando em um projeto que tem muitos modais chamando outros modais e alguns caras do HTML que podem não saber iniciá-lo todas as vezes para cada botão. Chegou a uma conclusão semelhante à de @gmaggio, relutantemente depois de percorrer o longo caminho primeiro.
EDIT: Agora suporta modais chamados via javascript.
EDIT: Abrindo um modal de rolagem de outro modal agora funciona.
Basta colocar o botão de chamada modal normalmente e, se ele for selecionado para estar dentro de um modal, ele fechará o atual primeiro, antes de abrir o especificado no data-target. Observe que
relatedTarget
é fornecido pelo Bootstrap.Eu também adicionei o seguinte para suavizar um pouco o desbotamento: Tenho certeza que mais pode ser feito.
fonte
A documentação do Twitter diz que o código personalizado é necessário ...
Isso funciona sem JavaScript extra, porém, CSS customizado seria altamente recomendado ...
fonte
z-index: 1080 !important;
Para o bootstrap 4, para expandir a resposta de @helloroy, usei o seguinte; -
A vantagem do acima é que ele não terá nenhum efeito quando houver apenas um modal, ele só entra em ação para múltiplos. Em segundo lugar, delega o manuseio ao organismo para garantir que os futuros modais que não são gerados atualmente ainda sejam atendidos.
Atualizar
Mudar para uma solução combinada js / css melhora a aparência - a animação de esmaecimento continua a funcionar no pano de fundo; -
combinado com o seguinte css; -
Isso vai lidar com modais aninhados até 4 de profundidade, que é mais do que eu preciso.
fonte
Experimente isto:
Este hack simples funciona para mim.
fonte
Para quem usa bootstrap 4 https://jsfiddle.net/helloroy/tmm9juoh/
fonte
Também tive alguns problemas com meus modais de rolagem, então fiz algo assim:
Servirá para qualquer modal dentro de um modal que venha a aparecer. Observe que o primeiro está fechado para que o segundo possa aparecer. Nenhuma mudança na estrutura do Bootstrap.
fonte
Eu fui por um caminho diferente todos juntos, eu decidi "desaninhá-los". Talvez alguém ache isso útil ...
fonte
Meu código funciona bem usando dispensa de dados.
fonte
Feche o primeiro modal Bootstrap e abra o novo modal dinamicamente.
fonte
Por que não apenas mudar o conteúdo do corpo modal?
No modal basta colocar um link ou um botão
Se você deseja apenas alternar entre 2 modais:
No modal basta colocar um link ou um botão
fonte
tente isto:
fonte
A resposta dada por H Dog é ótima, mas essa abordagem estava realmente me dando alguma cintilação modal no Internet Explorer 11. Bootstrap primeiro ocultará o modal removendo a classe 'modal-open' e então (usando a solução H Dogs) adicionamos o classe 'modal-open' novamente. Eu suspeito que de alguma forma isso está causando a cintilação que eu estava vendo, talvez devido a alguma renderização HTML / CSS lenta.
Outra solução é evitar o bootstrap ao remover a classe 'modal-open' do elemento body. Usando o Bootstrap 3.3.7, essa substituição da função interna hideModal funciona perfeitamente para mim.
Nesta substituição, a classe 'modal-open' só é removida quando não há modais visíveis na tela. E você evita que um frame remova e adicione uma classe ao elemento body.
Basta incluir a substituição após o bootstrap ter sido carregado.
fonte
fonte