Je travaille sur un site Web utilisant bootstrap.
Fondamentalement, je voulais utiliser un modal dans la page d'accueil, invoqué par le bouton dans l'unité Hero.
Code du bouton:
<button type="button"
class="btn btn-warning btn-large"
data-toggle="modal"
data-target="#myModal">Open Modal</button>
Code 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>
Le problème est que dès que je clique sur le bouton, le modal apparaît et disparaît immédiatement.
J'apprécierais toute aide.
De plus, comment changer la couleur du triangle déroulant (pointant vers le haut, pas de survol)? Je travaille sur un site Web basé sur l'orange et le marron et ce truc bleu est vraiment ennuyeux.
twitter-bootstrap
modal-dialog
gorokizu
la source
la source
Réponses:
Une cause probable
Il s'agit d'un comportement typique lorsque le JavaScript du plug-in Modal est chargé deux fois. Veuillez vérifier que le plugin n'est pas chargé deux fois. Selon la plateforme que vous utilisez, le code modal peut être chargé à partir d'un certain nombre de sources. Certains des plus courants sont:
require('bootstrap')
Conseils de débogage
Un bon point de départ consiste à inspecter les
click
écouteurs d'événements enregistrés à l'aide des outils de développement de votre navigateur. Chrome, par exemple, répertorie le fichier source JS où se trouve le code d'enregistrement de l'auditeur. Une autre option consiste à essayer de rechercher dans les sources de la page une phrase trouvée dans le code Modal, par exemple,var Modal
.Malheureusement, ceux-ci ne trouveront pas toujours des choses dans tous les cas. L'inspection des requêtes réseau peut être un peu plus robuste pour vous donner une image de tout ce qui est chargé sur une page.
Une démo (cassée)
Voici une démonstration de ce qui se passe lorsque vous chargez à la fois bootstrap.js et bootstrap-modal.js (juste pour confirmer votre expérience):
Plunker
Si vous faites défiler vers le bas de la source sur cette page, vous pouvez supprimer ou commenter la
<script>
ligne du fichier bootstrap-modal.js , puis vérifier que le modal fonctionnera désormais comme prévu.la source
J'ai eu le même problème mais sa cause était différente. J'ai suivi la documentation et créé un bouton comme ceci:
Quand j'ai cliqué dessus, il est apparu que rien ne se passerait. Cependant, le bouton se trouvait dans un
<form>
qui récupérait temporairement la même page.J'ai corrigé cela en ajoutant
type="button"
à l'élément bouton, afin qu'il ne soumette pas le formulaire lorsque vous cliquez dessus.la source
Pour moi, ce qui a fonctionné était de supprimer
à partir du bouton. Le bouton lui-même peut être n'importe quel élément - un lien, une div, un bouton, etc.
la source
J'ai cherché pendant un certain temps une référence de bootstrap en double dans mon application mvc, après les autres réponses utiles sur cette question.
Je l'ai finalement trouvé - il était inclus dans une autre bibliothèque que j'utilisais, donc ce n'était pas évident du tout! (
datatables.net
).Si vous rencontrez toujours ce problème, recherchez d'autres bibliothèques qui pourraient inclure le bootstrap pour vous. (
datatables.net
vous permet de spécifier un téléchargement avec ou sans bootstrap - d'autres font de même).J'ai donc retiré le
bootstrap.min.js
de monbundle.config
et tout a bien fonctionné.la source
Même symptôme, dans le cadre d'une application Rails avec Bootstrap fourni par la
bootstrap-sass
gemme, et la réponse de @ merv m'a mis sur la bonne voie.Mon
application.js
dossier comportait les éléments suivants:Le correctif consistait à supprimer l'une des deux lignes. En effet, le fichier Lisez-moi du bijou vous avertit de cette erreur. Ma faute.
la source
Mon code avait en quelque sorte le bootstrap.min.js inclus deux fois. J'en ai retiré un et tout fonctionne bien maintenant.
la source
e.preventDefault();
avec jquery uiPour moi, ce problème s'est produit avec le remplacement de la méthode de clic sur un bouton jquery ui, provoquant un rechargement de page au clic par défaut.
la source
Le problème peut également se produire si vous utilisez jquery vous attachez un écouteur d'événements deux fois. Par exemple, vous définiriez sans relier:
Si cela se produit, l'événement est déclenché deux fois de suite et le modal disparaît.
Voir exemple: http://embed.plnkr.co/i5xB1WbX7zgXrbDMhNAW/preview
la source
J'ai rencontré le même symptôme que @gpasse a montré dans son exemple. Voici mon code ...
Comme l'a suggéré @Bhargav, mon problème était dû au bouton qui tentait de soumettre le formulaire et de recharger la page. J'ai changé le bouton en
<a>
lien comme suit:... et cela a résolu le problème.
REMARQUE: Je n'ai pas encore assez de réputation pour simplement ajouter un commentaire ou un vote positif, et j'ai senti que je pouvais ajouter un petit éclaircissement.
la source
Moi aussi, j'ai eu le même problème, mais pour moi, cela se produisait parce que j'avais un bouton de type "soumettre" dans le formulaire modal. j'ai changé
à
Et cela a résolu le problème de la disparition.
la source
Dans mon cas, je n'avais qu'un seul fichier bootstrap.js, jquery.js inclus mais obtenant toujours ce type d'erreur, et mon code pour le bouton était quelque chose comme ceci:
J'ai simplement ajouté e.preventDefault (); et cela a fonctionné comme un charme.
Donc, mon nouveau code était comme ci-dessous:
la source
J'ai rencontré ce problème moi-même aujourd'hui et il se trouvait que ce n'était que dans Chrome. Ce qui m'a fait réaliser que cela pourrait être un problème de rendu. Le déplacement du modal spécifique vers son propre calque de rendu l'a résolu.
la source
Dans mon cas, un clic sur un bouton provoque un rechargement (non souhaité) de la page.
Voici ma solution:
la source
Dans mon cas, j'ai utilisé le
actionlink
bouton dans MVC et je suis confronté à ce problème, j'ai essayé de nombreuses solutions ci-dessus et d'autres, mais toujours face à ce problème, je me rends compte de mon erreur de code.J'ai appelé modal en javascript en utilisant
Avant l'erreur que j'utilise ce bouton
Je n'ai aucune valeur pour la propriété href dans ce bouton, donc je suis confronté au problème.
Ensuite, je modifie ce code de bouton comme ceci
alors le problème est résolu juste une erreur en raison de l'absence de # dans le premier.
voyez si cela vous sera utile.
la source
Encore une autre cause / solution! J'avais dans mon code JS:
Mais mon code HTML était déjà écrit comme:
C'est donc une autre permutation de la façon dont la duplication est entrée dans le code et a provoqué l'ouverture et la fermeture du modal. Dans mon cas,
data-target
etdata-toggle
en html selon les documents Bootstrap, déclenchez déjà le modal pour fonctionner. Le code JS est donc redondant et lorsqu'il est supprimé, il fonctionne.la source
J'ai eu le même problème en travaillant sur un projet avec asp.NET. J'utilisais bootstrap 3.1.0 pour le résoudre en rétrogradant vers Bootstrap 2.3.2.
la source
Moi aussi, j'ai eu le problème, si le bouton est à l'intérieur d'un tag puis le modal apparaît une fois et disparaît assez tôt, en retirant le bouton du formulaire corrigé. Merci je me suis retrouvé dans ce fil! +1 à tous.
la source
J'étais confronté au même problème lors des tests sur les appareils mobiles et cette astuce a fonctionné pour moi
Remplacez le bouton par une balise d'ancrage qui devrait fonctionner, le problème se produit en raison de son bouton de type lors de la tentative de soumission, le modal disparaît immédiatement
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
.la source
type="submit"
pourtype="button"
résoudre ce problème.Dans mon cas, j'avais le CDN inclus dans la tête du fichier application.html.erb et j'ai également installé le joyau «jquery-rails», que je suppose grâce à la documentation et aux publications ci-dessus, est redondant.
J'ai simplement commenté le CDN (ci-dessous) du responsable du fichier application.html.erb et le modal reste ouvert de manière appropriée.
la source
J'avais aussi le même problème. Le problème avec moi était que j'affichais le modal en appuyant sur un lien et en demandant une confirmation avec jquery.
Le code ci-dessous affiche le modal et qui disparaît immédiatement:
J'ai fini par ajouter «#» à href afin que le lien n'aille nulle part et cela ait résolu mon problème.
la source
Avez-vous essayé de supprimer
la source
Je sais que c'est vieux, mais voici une autre chose à vérifier - assurez-vous que vous n'avez qu'un seul attribut data-target =. Je l'avais dupliqué et le résultat était conforme à ce fil.
la source
J'avais ajouté
bootstrap
à mon projet viabower
, puis j'ai importé lebootstrap.min.js
fichier et après lemodal.js
fichier. (Le bouton qui ouvre le modal est à l'intérieur d'un formulaire). Je supprime simplement l'importation pourmodal.js
et cela fonctionne pour moi.la source
au cas où quelqu'un utiliserait bootstrap codeigniter 3 avec datatable.
ci-dessous est mon correctif dans config / ci_boostrap.php
la source
J'ai dû faire face au même problème. La raison est la même que la
@merv
. Le problème venait d'un composant de calendrier ajouté à la page. Le composant lui-même ajoute la fonctionnalité modale à utiliser dans la fenêtre contextuelle du calendrier.Ainsi, les raisons de briser le popup de modèle seront l'une ou plusieurs des suivantes
la source
en travaillant avec Angular (5), je suis confronté au même problème, mais dans mon cas, j'ai résolu comme suit:
component.html
component.ts
NOTE: besoin d'importer jquery dans le fichier ts comme "declare var $: any;"
Modifications que j'ai apportées:
supprimé "data-toggle =" modal "de la balise Button (grâce à @miCRoSCoPiC_eaRthLinG cette réponse m'aide ici) dans mon cas, son affichage modal j'ai donc créé (cliquez) =" showresult () "
inside component.ts doit déclarer Jquery ($) et la méthode click interne du bouton showresult () appelle "$ ('# myModal'). modal ('show');"
la source
J'ai eu le même problème parce que je basculais mon modal deux fois comme indiqué ci-dessous:
J'ai supprimé une occurrence de:
et cela a fonctionné comme par magie!
la source