我正在用bootstrap做一个网站。

基本上,我想在主页中使用一个模态,通过Hero Unit中的按钮来调用。

按钮代码:

<button type="button" 
    class="btn btn-warning btn-large" 
    data-toggle="modal"
    data-target="#myModal">Open Modal</button>

模态代码:

<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>

问题是,只要我点击按钮,模态就会淡入,然后立即消失。

我很感激你的帮助。

此外,如何改变下拉三角形的颜色(指向向上,没有悬停)?我正在做一个基于橙色和棕色的网站,那个蓝色的东西真的很烦人。


一个可能的原因

这是用于Modal插件的JavaScript被加载两次的典型行为。请检查,以确保插件没有得到双重加载。根据所使用的平台的不同,模态代码可以从多个源加载。常见的有:

BootStrap . JS(完整的BootStrap JS套件) Bootstrap.min.js(和上面一样,只是缩小了) Bootstrap-modal.js(独立插件) 依赖项加载器,例如require('bootstrap')

调试技巧

使用浏览器中的开发人员工具检查已注册的单击事件侦听器是一个很好的开始。例如,Chrome会列出JS源文件,其中可以找到注册监听器的代码。另一种选择是尝试在页面上搜索模态代码中找到的短语,例如var Modal。

不幸的是,这些并不总是能在所有情况下找到东西。检查网络请求可以让您了解页面上加载的所有内容。

一个(破碎的)演示

下面是加载bootstrap.js和bootstrap-modal.js时发生的事情的演示(只是为了确认你的经验):

砰砰作响

如果您向下滚动到该页的源代码底部,您可以删除或注释掉bootstrap-modal.js的<script>行,然后验证现在模式将按预期运行。


e.preventDefault ();jquery UI

对我来说,这个问题发生在jquery ui按钮上的click方法覆盖,导致默认情况下单击页面重新加载。


我在asp.NET项目中遇到了同样的问题。我使用bootstrap 3.1.0解决了它降级到bootstrap 2.3.2。


如果使用jquery两次附加事件监听器,也会出现这个问题。 例如,你可以在不解除绑定的情况下设置:

            $("body").on("click","#fixerror",function(event){
                $("#fixerrormodal").modal('toggle')
            })

如果发生这种情况,事件将连续触发两次,模态将消失。

            $("body").on("click","#fixerror",function(event){
                $("#fixerrormodal").modal()
                $("#fixerrormodal").modal('toggle')
            })

参见示例:http://embed.plnkr.co/i5xB1WbX7zgXrbDMhNAW/preview


我也有同样的问题,但原因不同。我按照文档创建了一个按钮,如下所示:

<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

当我点击它时,似乎什么也不会发生。但是,该按钮位于<form>中,它暂时只是获取相同的页面。

我通过在button元素中添加type="button"来解决这个问题,这样当点击时它就不会提交表单了。


我也有这个问题,如果按钮是在一个标签内,然后模态出现一次,很快就消失了,把按钮从形式固定的问题。谢谢我在这个帖子结束!+1到所有。


我在移动设备上测试时也遇到过同样的问题,这个技巧对我来说很管用

<a type="submit" class="btn btn-primary" data-toggle="modal" href="#myModal">Submit</a> 

将按钮更改为锚定标签应该可以工作,问题是由于它的类型按钮,因为它试图提交,所以模式立即消失。并且也从模态中移除隐藏隐藏淡出给予 <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria- labledby ="myModalLabel" aria-hidden="true"> 希望这对你有用。


我遇到了@gpasse在他的例子中显示的相同症状。这是我的密码……

<form...>
  <!-- various inputs with form submit --->

  <!-- button opens modal to show dynamic info -->
  <button id="myButton" class="btn btn-primary">Show Modal</button>
</form>

<div id="myModal" class="modal fade" ...>
</div>

<script>
  $( '#myButton' ).click( function() {
    $( '#myModal' ).modal();
  )};
</script>

正如@Bhargav所建议的,我的问题是由于按钮试图提交表单,并重新加载页面。我将按钮更改为<a>链接如下:

<a href="#" id="myButton" class="btn btn-primary">Show Modal</a>

...它解决了这个问题。

注意:我还没有足够的声誉来简单地添加评论或点赞,我觉得我可以补充一点澄清。


同样的症状,在一个带有Bootstrap -sass gem提供的Bootstrap的Rails应用程序的上下文中,@merv的回答使我走上了正确的轨道。

我的application.js文件有以下内容:

//= require bootstrap
//= require bootstrap-sprockets

解决办法是去掉两条线中的一条。事实上,宝石的自述会警告你这个错误。我的坏。


在我的例子中,我在application.html.erb的头部包含了CDN,还安装了'jquery-rails' gem,我猜这是多余的,感谢上面的文档和帖子。

我简单地从application.html.erb的头部注释掉了CDN(如下所示),并且模式适当地保持打开。

<!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>-->

在我的情况下,我只有一个bootstrap.js, jquery.js文件,但仍然得到这种类型的错误,我的代码按钮是这样的:

<script type="text/javascript">
$(document).ready(function(){
   $("#bttn_<?php echo $rnt['id'];?>").click(function(){
      $("#myModal_<?php echo $rnt['id'];?>").modal('show');
   });
});
</script>

我简单地添加了e.c preventdefault ();对它很有吸引力。

所以,我的新代码如下:

<script type="text/javascript">
$(document).ready(function(){
  e.preventDefault();
  $("#bttn_<?php echo $rnt['id'];?>").click(function(){
     $("#myModal_<?php echo $rnt['id'];?>").modal('show');
  });
});
</script>

我的代码莫名其妙地包含了bootstrap.min.js两次。我移除了其中一个,现在一切都很好。


今天我自己也遇到了这个问题,而且碰巧只是在Chrome上。是什么让我意识到这可能是一个渲染问题。 移动特定的模式到它自己的渲染层解决了这个问题。

#myModal {
  -webkit-transform: translate3d(0, 0, 0);
}

我在我的mvc应用程序中寻找了一个重复的引导参考,在这个问题上的其他有用的答案之后。

终于找到了——它包含在我正在使用的另一个库中,所以一点也不明显!(datatables.net)。

如果您仍然遇到这个问题,请寻找其他可能为您包含引导的库。(datatables.net允许您指定有或没有引导的下载-其他人也这样做)。

所以我从我的包中删除了bootstrap.min.js。配置和所有工作都很好。


我也有同样的问题。我的问题是,我是显示模式按下一个链接和提示确认与jquery。

下面的代码显示了模态,并立即消失:

<a href="" onclick="do_some_stuff()">Hey</a>

我最终在href中添加了“#”,这样链接就不会去任何地方,这解决了我的问题。

<a href="#" onclick="do_some_stuff()">Hey</a>

我也有同样的问题,但对我来说,这是因为我在模式表单中有一个类型为“提交”的按钮。我改变了

    <input  type='submit' name='submitname' id="partyBtn" value='Submit' title='Click to submit.'/>

to

    <input  type='button' name='submitname' id="partyBtn" value='Submit' title='Click to submit.'/>

这就解决了失踪问题。


对我来说,有效的方法是去除

data-toggle="modal"

从按钮。按钮本身可以是任何元素-链接,div,按钮等。


在我的例子中,单击按钮会导致页面重新加载(不希望)。

以下是我的解决方案:

<button class="btn btn-success" onclick="javascript: return false;" 
data-target="#modalID" data-toggle="modal">deaktivieren</button>

在我的情况下,我在MVC中使用actionlink按钮,我面临这个问题,我尝试了上面和其他许多解决方案,但仍然面临这个问题,然后我意识到我在代码中的错误。

我在javascript中调用了modal

 $('#ModalId').modal('show');

在出现错误之前,我使用了这个按钮

<a href="" onclick="return Edit();" class="btn btn-primary">Edit</a>

我在这个按钮中没有href属性的值,所以我面临这个问题。

然后像这样编辑按钮代码

 <a href="#" onclick="return Edit();" class="btn btn-primary">Edit</a>

然后问题得到解决,只是一个错误,因为没有#在第一个。

看看这对你是否有帮助。


我知道这是旧的,但这里还有另一件事要检查—确保您只有一个data-target=属性。我复制了它,结果是按照这个线程。


我已经通过bower添加了bootstrap到我的项目中,然后我导入了bootstrap.min.js文件,然后导入了modal.js文件。(打开模式的按钮在表单内部)。我只是删除了modal.js的导入,它为我工作。


以防任何人使用codeigniter 3引导数据表。

下面是我在config/ci_boostrap.php中的修复

//'assets/dist/frontend/lib.min.js',
//lib.min.js has conflict with datatables.js and i removed it replace with jquery.js
'assets/dist/frontend/jquery-3.3.1.min.js',
'assets/dist/frontend/app.min.js',
'assets/dist/datatables.js'

不得不面对同样的问题。原因和@merv一样。问题是添加到页面的日历组件。组件本身添加了在日历弹出框中使用的模态特性。

因此,打破模型弹出窗口的原因将是以下一个或多个

加载多个bootstrap js版本/文件(缩小…) 将外部日历添加到使用引导的页面 向页面添加自定义警报或弹出库 添加弹出行为的任何其他库


在使用Angular(5)时,我也遇到了同样的问题,但在我的案例中,我是这样解决的:

component.html

<button type="button" class="btn btn-primary"  data-target="#myModal" 
(click)="showresult()">fff</button>

<div class="modal" id="myModal" role="dialog"  tabindex="-1" data-backdrop="false">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title">Modal title</h5>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
        </div>
        <div class="modal-body">
          <p>Modal body text goes here.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-primary">Save changes</button>
          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        </div>
      </div>
    </div>
  </div>

component.ts

注意:需要在ts文件中导入jquery作为“declare var $:any;”

  showresult(){
    debugger
    $('#myModal').modal('show');
  }

我做的改动:

删除"data-toggle="modal"从按钮标签(感谢@miCRoSCoPiC_eaRthLinG这个答案帮助我这里)在我的情况下,它显示模式,所以我创建(点击)="showresult()" 内部组件。ts需要声明Jquery($)和内部按钮点击方法showresult()调用" $('#myModal').modal('show');"


你有没有试过去除

data-dismiss="modal"

又是一个原因/解决方案!我在JS代码中有:

$("#show_survey").click(function() {
  $("#survey_modal").modal("show")
})

但是我的HTML代码已经写成了:

<a class="small-text link" data-target="#survey_modal" data-toggle="modal" href="#" id="show_survey">Take a quick 7 question survey!</a>

这是复制输入代码并导致模态打开然后关闭的另一种排列方式。在我的例子中,数据目标和数据切换在html按照引导文档已经触发模式工作。因此,JS代码是冗余的,当删除它时,它可以工作。


我有同样的问题,因为我切换了我的模式两次,如下所示:

statusCode: {
    410: function (request, status, error) { //custom error code

        document.getElementById('modalbody').innerHTML = error;
        $('#myErrorModal').modal('toggle')
    }
},
error: function (request, error) {

    document.getElementById('modalbody').innerHTML = error;
    $('#myErrorModal').modal('toggle')
}

我删除了一个出现项:

(“# myErrorModal美元)。“充气”(资本)

它像魔法一样起作用!