文档章节

Bootstrap 模态框只能加载一次数据的解决办法以及ie,chrome兼容性问题

Seabiscuit彡
 Seabiscuit彡
发布于 2014/12/16 11:11
字数 694
阅读 112
收藏 0

1. Bootstrap 模态对话框和简单使用

1
2
3
4
5
6
7
8
9
10
11
12
13
< div  id = "myModal"  class = "modal hide fade" >
     < div  class = "modal-header" >
         < button  type = "button"  class = "close"  data-dismiss = "modal" >x</ button >
         < h3 >对话框标题</ h3 >
     </ div >
     < div  class = "modal-body" >
         < p >对话框主体</ p >
     </ div >
     < div  class = "modal-footer" >
         < a  href = "#"  class = "btn"  data-dismiss = "modal" >取消</ a >
         < a  href = "#"  class = "btn btn-primary"  data-dismiss = "modal" >确定</ a >
     </ div >
</ div >

显示效果与下图相似:

可以使用按钮或链接直接调用模态对话框,这是简单的用法:

1
2
< button  type = "button"  data-toggle = "modal"  data-target = "#myModal" >打开对话框</ button >
< a  href = "#myModal"  role = "button"  class = "btn"  data-toggle = "modal" >打开对话框</ button >

这样只能把静态内容在对话框中显示出来,使用对话框的 remote 选项可以实现更强大的效果。

2. 使用 remote 选项让模态对话框加载页面到 .modal-body 中

有两种方法,一种是使用链接,另一种就是使用脚本。

2.1 使用链接

1
< a  href = "page.jsp"  data-toggle = "modal"  data-target = "#myModal" >打开对话框</ a >

当点击此链接时,page.jsp 的内容会被加载到对话框的 .modal-body 中,随即显示对话框。

2.2 使用脚本

1
2
3
$( "#myModal" ).modal({
     remote:  "page.jsp"
});

这段脚本的效果和使用链接是一样的,当这段脚本执行后,page.jsp 的内容会被加载到对话框的 .modal-body 中,随即显示对话框。

这两种方法的背后,都是 Bootstrap 调用了 jQuery 的 load() 方法,从服务器端加载了 page.jsp 页面。但这个加载只会发生一次,后面不管你点击几次链接,或者执行几次脚本,哪怕改变传递给 remote 选项的值,对话框都不会重新加载页面,这真是个让人头疼的事情。不过问题还是能够解决的。

3. 移除数据,让对话框能够在每次打开时重新加载页面

在搜索并查阅了相关文档后,发现在对话框的 hidden 事件里写上一条语句就可以了:

1
2
3
$( "#myModal" ).on( "hidden" function () {
     $( this ).removeData( "modal" );
});

也可以在每次打开对话框之前移除数据,效果是一样的。

注:上面的代码基于 Bootstrap v2,如果使用 Bootstrape v3,模态对话框的 HTML 和事件的写法有一些不同,例如对于上面的 hidden 事件,要写成:

1
2
3
$( "#myModal" ).on( "hidden.bs.modal" function () {
     $( this ).removeData( "bs.modal" );
});

参考文档

兼容性问题(IE,Chrome显示不出数据)

    解决方法:数据需要延迟查询显示,可以在调后时使用setTimeout(function(){}, time);方法,先让模态框显示出来的基础上再显示数据


本文转载自:http://my.oschina.net/qczhang/blog/190215?p=1

Seabiscuit彡
粉丝 1
博文 15
码字总数 0
作品 0
武汉
程序员
私信 提问
Bootstrap 模态对话框只加载一次 remote 数据的解决办法

Bootstrap 模态对话框和简单使用 <div id="myModal" class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">x</button> <h3>对话......

张前程
2014/01/05
0
21
模态框中datetimepicker插件滑动时上下分离的另外一种思路

背景介绍 目前正在做的一个项目中需要在模态框中增加一列订单数据,而添加订单数据时必须要添加订单的日期,添加订单日期就要用到日期插件,所以我选择的是bootstrap-datetimepicker这个日期...

彩虹的夜晚
2018/01/27
0
0
Bootstrap样式在JSP中显示不正常

1. 用的样式是bootstrap; 2. html文件是从jsp编译出来的源码copy出来的; 3. 效果差异: a. 模态框位置 b. input-group的效果,没有连接成一个整体的输入框 c. 模态框在JSP中也不会动态响应页...

Envy_LZC
2015/05/23
8K
6
求教bootstrap modal模态框第一次加载时遮盖页面按钮的问题

我在用bootstrap做一个web应用时,遇到了这样的问题,我的页面通过点击添加或者编辑会弹出一个模态窗口,第一次访问页面时不显示的,但是我页面上有一个搜索框,当我点击时,发现按钮不可用,...

601983016
2015/11/10
2.8K
5
枫树浏览器 ChromePlus1.6.2.0 alpha1发布

枫树浏览器 ChromePlus1.6.2.0 alpha1发布,本次更新升级内核到chrome浏览器的最新稳定版(11.0.696.68)欢迎大家下载使用! ChromePlus1.6.2.0 alpha1更新日志: 升级基版本到chrome浏览器的...

红薯
2011/05/14
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
5分钟前
0
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
3
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
3
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
9
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部