Estoy trabajando en un sitio web usando bootstrap.
Básicamente, quería usar un modal en la página de inicio, convocado por el botón en la Unidad de Héroe.
Código del botón:
<button type="button"
class="btn btn-warning btn-large"
data-toggle="modal"
data-target="#myModal">Open Modal</button>
Código modal:
<div class="modal hide fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">In Costruzione</h3>
</div>
<div class="modal-body">
<p>Test Modal: Bootstrap</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Chiudi</button>
<button class="btn btn-warning">Salva</button>
</div>
</div>
El problema es que tan pronto como hago clic en el botón, el modal se desvanece y luego desaparece inmediatamente.
Agradecería cualquier ayuda.
Además, ¿cómo cambiar el color del triángulo desplegable (apuntando hacia arriba, sin desplazamiento)? Estoy trabajando en un sitio web basado en naranja y marrón y esa cosa azul es realmente molesta.
twitter-bootstrap
modal-dialog
gorokizu
fuente
fuente
Respuestas:
Una causa probable
Este es el comportamiento típico cuando el JavaScript para el complemento modal se carga dos veces. Verifique para asegurarse de que el complemento no se esté cargando dos veces. Dependiendo de la plataforma que esté utilizando, el código modal podría cargarse desde varias fuentes. Algunos de los comunes son:
require('bootstrap')
Consejos de depuración
Un buen lugar para comenzar es inspeccionar a los
click
oyentes de eventos registrados utilizando las herramientas de desarrollador en su navegador. Chrome, por ejemplo, enumerará el archivo fuente JS donde se puede encontrar el código para registrar al oyente. Otra opción es tratar de buscar las fuentes en la página de una frase que se encuentra en el código modal, por ejemplo,var Modal
.Desafortunadamente, estos no siempre encontrarán cosas en todos los casos. Inspeccionar las solicitudes de red puede ser un poco más robusto para darle una imagen de todo lo cargado en una página.
Una demostración (rota)
Aquí hay una demostración de lo que sucede cuando carga bootstrap.js y bootstrap-modal.js (solo para confirmar su experiencia):
Saqueador
Si se desplaza hacia la parte inferior de la fuente en esa página, puede eliminar o comentar la
<script>
línea de bootstrap-modal.js y luego verificar que ahora el modal funcione como se esperaba.fuente
Tuve el mismo problema pero tenía una causa diferente. Seguí la documentación y creé un botón así:
Cuando hice clic, parecía que no pasaría nada. Sin embargo, el botón estaba en un
<form>
que temporalmente solo estaba recuperando la misma página.Arreglé esto agregando
type="button"
al elemento del botón, para que no envíe el formulario al hacer clic.fuente
Para mí lo que funcionó fue eliminar
desde el botón El botón en sí puede ser cualquier elemento: un enlace, div, botón, etc.
fuente
Busqué por un momento una referencia de bootstrap duplicada en mi aplicación mvc, después de las otras respuestas útiles sobre esta pregunta.
Finalmente lo encontré: estaba incluido en otra biblioteca que estaba usando, ¡así que no era nada obvio! (
datatables.net
)Si aún tiene este problema, busque otras bibliotecas que podrían incluir bootstrap para usted. (le
datatables.net
permite especificar una descarga con o sin bootstrap; otros hacen lo mismo).Así que quité el
bootstrap.min.js
de mibundle.config
y todo funcionó bien.fuente
El mismo síntoma, en el contexto de una aplicación Rails con Bootstrap proporcionada por la
bootstrap-sass
gema, y la respuesta de @ merv me puso en el camino correcto.Mi
application.js
archivo tenía lo siguiente:La solución fue eliminar una de las dos líneas. De hecho, el léame de la gema te advierte sobre este error. Culpa mía.
fuente
Mi código de alguna manera tenía bootstrap.min.js incluido dos veces. Quité uno de ellos y todo funciona bien ahora.
fuente
e.preventDefault();
con jquery uiPara mí, este problema se produjo con la anulación del método de clic en un botón jquery ui, lo que provocó una recarga de la página al hacer clic de forma predeterminada.
fuente
El problema también puede ocurrir si al usar jquery adjuntas un detector de eventos dos veces. Por ejemplo, establecería sin desvincular:
Si esto sucede, el evento se dispara dos veces seguidas y el modal desaparece.
Ver ejemplo: http://embed.plnkr.co/i5xB1WbX7zgXrbDMhNAW/preview
fuente
Me encontré con el mismo síntoma que @gpasse mostró en su ejemplo. Aquí estaba mi código ...
Como sugirió @Bhargav, mi problema se debió a que el botón intentó enviar el formulario y volvió a cargar la página. Cambié el botón a un
<a>
enlace de la siguiente manera:... y solucionó el problema.
NOTA: Todavía no tengo suficiente reputación para simplemente agregar un comentario o votar, y sentí que podría agregar una pequeña aclaración.
fuente
Yo también tuve el mismo problema, pero para mí estaba sucediendo porque tenía un botón con el tipo "enviar" dentro del formulario modal. Cambié
a
Y eso solucionó el problema de la desaparición.
fuente
En mi caso, solo tenía un solo archivo bootstrap.js, jquery.js incluido, pero aún obtenía ese tipo de error, y mi código para el botón era algo como esto:
Simplemente agregué e.preventDefault ();y funcionó a las mil maravillas.
Entonces, mi nuevo código era el siguiente:
fuente
Hoy mismo me encontré con este problema y resultó que solo estaba en Chrome. Lo que me hizo darme cuenta de que podría ser un problema de representación. Mover el modal específico a su propia capa de representación lo resolvió.
fuente
En mi caso, un clic en un botón provoca una recarga (no deseada) de la página.
Aquí está mi solución:
fuente
En mi caso, he usado el
actionlink
botón en MVC y me he enfrentado a este problema, he intentado muchas soluciones anteriores y otras, pero todavía enfrento ese problema, luego me doy cuenta de mi error en el código.He llamado modal en javascript usando
Antes del error utilizo este botón
No tengo ningún valor para la propiedad href en este botón, así que enfrento el problema.
Luego edito este código de botón como este
entonces el problema se resuelve solo un error debido a que no hay # en el primero.
mira si esto te será útil.
fuente
¡Otra causa / solución más! Tenía en mi código JS:
Pero mi código HTML ya estaba escrito como:
Entonces, esta es otra permutación de cómo la duplicación ingresó el código y causó que el modal se abriera y luego se cerrara. En mi caso,
data-target
ydata-toggle
en html según Bootstrap, los documentos ya activan el modal para que funcione. Por lo tanto, el código JS es redundante y, cuando se elimina, funciona.fuente
Tuve el mismo problema trabajando en un proyecto con asp.NET. Estaba usando bootstrap 3.1.0 lo resolvió degradar a Bootstrap 2.3.2.
fuente
Yo también tuve el problema, si el botón está dentro de un etiqueta entonces el modal aparece una vez y desaparece lo suficientemente pronto, sacando el botón de la forma fijada la isue. Gracias terminé en este hilo! +1 a todos.
fuente
Estaba enfrentando el mismo problema durante las pruebas en dispositivos móviles y este truco funcionó para mí.
Cambie el botón para anclar la etiqueta que debería funcionar, el problema se produce debido a su botón de tipo, ya que está tratando de enviarlo, por lo que el modal desaparece de inmediato
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
.fuente
type="submit"
paratype="button"
resolver este problema.En mi caso, tenía el CDN incluido en el encabezado de application.html.erb y también instalé la gema 'jquery-rails', que supongo que gracias a la documentación y publicaciones anteriores, es redundante.
Simplemente comenté el CDN (a continuación) del jefe de application.html.erb y el modal se mantiene abierto adecuadamente.
fuente
Tuve el mismo problema también. El problema conmigo era que estaba mostrando el modal al presionar un enlace y solicitar confirmación con jquery.
El siguiente código muestra el modal y que desapareció de inmediato:
Terminé agregando '#' a href para que el enlace no vaya a ninguna parte y resolvió mi problema.
fuente
¿Has intentado eliminar
fuente
Sé que esto es antiguo, pero aquí hay otra cosa para verificar: asegúrese de tener solo un atributo data-target =. Lo había duplicado y el resultado fue según este hilo.
fuente
Había agregado
bootstrap
a mi proyecto a través debower
, luego importé elbootstrap.min.js
archivo y después delmodal.js
archivo. (El botón que abre el modal está dentro de un formulario). Solo elimino la importaciónmodal.js
y funciona para mí.fuente
en caso de que alguien use codeigniter 3 bootstrap con datatable.
a continuación está mi solución en config / ci_boostrap.php
fuente
Tuve que enfrentar el mismo problema. La razón es la misma que la
@merv
. El problema fue con un componente de calendario agregado a la página. El componente en sí agrega la función modal que se utilizará en la ventana emergente del calendario.Entonces, las razones para romper la ventana emergente del modelo serán una o más de las siguientes
fuente
Mientras trabajo con Angular (5), enfrento el mismo problema, pero en mi caso resolví lo siguiente:
componente.html
componente.ts
NOTA: necesita importar jquery en el archivo ts como "declare var $: any;"
Cambios que hice:
eliminé "data-toggle =" modal "de la etiqueta del botón (gracias a @miCRoSCoPiC_eaRthLinG esta respuesta me ayuda aquí) en mi caso muestra modal, así que creé (click) =" showresult () "
El componente inside.ts debe declarar Jquery ($) y el método de clic dentro del botón showresult () llama "$ ('# myModal'). modal ('show');"
fuente
Tuve el mismo problema porque estaba cambiando mi modal dos veces como se muestra a continuación:
Eliminé una aparición de:
y funcionó como magia!
fuente