Estou usando o pop-up modal do bootstrap do Twitter.
<div id="myModal" class="modal hide fade in">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>Header</h3>
</div>
<div class="modal-body"></div>
<div class="modal-footer">
<input type="submit" class="btn btn-success" value="Save"/>
</div>
</div>
Posso carregar conteúdo usando ajax com este elemento a:
<a data-toggle="modal" data-target="#myModal" href="edit.aspx">Open modal</a>
Agora tenho que abrir o mesmo modal, mas usando uma url diferente. Estou usando este modal para editar uma entidade do meu banco de dados. Portanto, quando clico em editar em uma entidade, preciso carregar o modal com um ID.
<a data-toggle="modal" data-target="#myModal" href="edit.aspx?id=1">Open modal</a>
<a data-toggle="modal" data-target="#myModal" href="edit.aspx?id=2">Open modal</a>
<a data-toggle="modal" data-target="#myModal" href="edit.aspx?id=3">Open modal</a>
Se eu clicar no link número 1, funciona bem. Mas se eu clicar no link número 2, o conteúdo modal já está carregado e, portanto, mostrará o conteúdo do link número 1.
Como posso atualizar ou redefinir o conteúdo carregado ajax em um pop-up modal bootstrap do Twitter?
javascript
twitter-bootstrap
stian.net
fonte
fonte
Respostas:
Estou tendo o mesmo problema e acho que a maneira de fazer isso será remover o atributo data-toggle e ter um manipulador personalizado para os links.
Algo nas linhas de:
Vou tentar mais tarde e postar comentários.
fonte
Para descarregar os dados quando o modal é fechado, você pode usar isso com o Bootstrap 2.x:
E no Bootstrap 3 ( https://github.com/twbs/bootstrap/pull/7935#issuecomment-18513516 ):
fonte
Você pode forçar o Modal a atualizar o pop-up adicionando esta linha no final do método de ocultar do plug-in Modal (se você estiver usando bootstrap-transit.js v2.1.1, deve estar na linha 836)
Ou com um ouvinte de evento
fonte
load()
chamada do construtor para oshow()
, ou adicionar um método ao plug-in para acionar manualmente uma recarga deremote
. Sobre a segunda sugestão, eu apenas forneci isso como uma resposta para uma pergunta que explicitamente pedia para não fazer da maneira sugerida por @markz .Com o Bootstrap 3, você pode usar o manipulador de eventos 'hidden.bs.modal' para excluir qualquer dado relacionado ao modal, forçando o pop-up a recarregar na próxima vez:
fonte
Com base em outras respostas (obrigado a todos).
Eu precisei ajustar o código para funcionar, já que simplesmente chamar .html apagava todo o conteúdo e o modal não carregava com nenhum conteúdo depois que eu fizesse isso. Então, simplesmente procurei a área de conteúdo do modal e apliquei a redefinição do HTML lá.
Ainda posso ir com a resposta aceita, pois estou obtendo um salto feio pouco antes do modal carrega, pois o controle é com Bootstrap.
fonte
Um pouco mais comprimido do que o exemplo acima aceito. Pega o alvo do alvo de dados do objeto clicado atual com data-toggle = modal ativado. Isso faz com que você não precise saber qual é o id do modal de destino, apenas reutilize o mesmo! menos código = vitória! Você também pode modificar isso para carregar títulos, rótulos e botões para o seu modal, se desejar.
Links de exemplo:
fonte
Fiz uma pequena alteração na resposta do Softlion , então todos os meus modais não serão atualizados em hide. Os modais com atributo data-refresh = 'true' são apenas atualizados, outros funcionam normalmente. Aqui está a versão modificada.
Agora use o atributo conforme mostrado abaixo,
Isso garantirá que apenas os modais com data-refresh = 'true' sejam atualizados. E também estou redefinindo o html modal porque os valores antigos são mostrados até que os novos sejam carregados, tornando esse html vazio.
fonte
Aqui está uma versão em coffeescript que funcionou para mim.
fonte
Funcionará para todas as versões do twitterbootstrap
Código Javascript:
links para modal são
pop up modal
fonte
Eu também estava preso neste problema quando vi que os ids do modal são os mesmos. Você precisa de diferentes ids de modais se quiser vários modais. Eu usei id dinâmico . Aqui está meu código em
haml
:você consegue fazer isso
e seus links para modal serão
Eu espero que isso funcione para você.
fonte
Você pode tentar isto:
fonte
Eu queria que o conteúdo carregado em AJAX fosse removido quando o modal fosse fechado, então ajustei a linha sugerida por outros (sintaxe coffeescript):
fonte
var $ table = $ ('# myTable2');
$ table.bootstrapTable ('destruir');
Funcionou para mim
fonte
etapa 1: crie um wrapper para o modal chamado
clone-modal-wrapper
.etapa 2: crie um div em branco chamado
modal-wrapper
.Etapa 3: copie o elemento modal de
clone-modal-wrapper
paramodal-wrapper
.etapa 4: Alterne o modal de
modal-wrapper
.fonte