8.3 笔者的建议

总地来说,3个小时完成这么多内容,还是很不错的,但是真正了解Bootstrap以后,其实还可以做得更好,但是也需要一些相关的技巧。

举个例子,在使用modal的时候,对New按钮的弹窗内容,如果默认隐藏在当前页,使用jQuery的validate控件的话,就需要给Create按钮的click事件做一个回调来触发表单的submit事件,部分validate验证是没办法起作用的。但是如果这个表单的内容是采用ajax获取的(例如使用了MVC的model绑定),就算添加了回调也是没用的,原因是validate插件只对现有DOM对象里的表单进行验证,ajax获取的表单属于后来附加上去的,根本就没有绑定相关的validate事件。

所以上述问题的解决方案是,在modal弹出的show事件里重新绑定应用的插件。举个例子,笔者之前在Asp.net MVC项目里使用到了jquery.validate.unobtrusive.js插件,修改后的绑定代码如下:

  1. $('#newPopUp').on('show.bs.modal', function (e) {
  2. $.validator.unobtrusive.parse($(this).find("form")); // 对modal内的form重新
  3. // 绑定validate事件
  4. })

几乎绝大部分插件在modal上使用的时候都要进行这种重新绑定,比如BootSwitch、Date Time Picker等。它们的重新绑定代码如下:

  1. $('#newPopUp').on('show.bs.modal', function (e) {
  2. var popup = $(this);
  3.  
  4. if ($.fn.bootstrapSwitch) {
  5. popup.find("form .switch")['bootstrapSwitch']();
  6. }
  7.  
  8. if ($.fn.datepicker) {
  9. popup.find('form .datepicker').datepicker().on('changeDate', function (ev) {
  10. $(this).datepicker('hide');
  11. });
  12. }
  13. })

另外,针对上述表格的制作,笔者还有一些建议。相信在考虑了这些建议以后,制作出的网页,可能会让老板(或客户)更加满意。那就来看看都是什么样的小建议吧。

❑分页数字的方框宽度不一样,如果是3位数字,就会变得大小不一,需要根据实际情况调节。

❑鼠标hover时每个tr的背景色要换成自定义的颜色的话,还得再改造一下。

❑如果要做响应式表格,又该如何呢?

❑目前只是一个表格,怎么融合到整个页面里?比如左边的菜单和顶部的菜单,如果有冲突该怎么办?

❑如果表格里没有记录,如何提示“无记录”这样的显示,并且优化相应的背景色。

❑表头的背景颜色能否自定义?

❑如果需要搜索功能,又该如何做?

❑如果需要设置每页显示的记录数(pagesize),该怎么放合适?

❑是否能找个地方添加一个跳转页码的功能?

❑如果提示“添加成功”、“删除成功”之类的信息的话,如何做带有动画过渡效果的提示?

❑如果modal使用ajax获取内容,是自己组装,还是使用remote参数?

❑如果是自己组装内容,可以使用模板绑定插件,比如使用Underscore插件进行模板处理。

❑如果使用remote参数的话,还要注意它会替换modal内的所有内容(包括head、body、foot)。

相信,针对这些小细节调整以后,会获得意想不到的效果。大家有时间的话,可以慢慢完善这个表格,相信大部分的Web系统都会使用到表格,届时你就会非常轻松了。