bootstrap-datepicker控件的使用及修改位置错误问题

bootstrap-datepicker控件的使用及修改位置错误问题

一、html自带的时间日期控件

html自带位时间日期控件,却没有format属性,它的显示格式是:“yyyy/mm/dd”有时候我们需要时间日期格式为“yyyy-mm-dd",虽然HTML5中INPUT类型支持date并没有规定日历弹出框的实现和样式。所以,各浏览器根据自己的设计实现日历。对于日期格式也只有一种,这对于数据库输入有要求"yyyy-mm-dd"就无能为力了。在Input类型获得时间日期控件也非常简单只需输入date就可以显示控件。
如图1、2所示:
html

<div class="row mb-3 mt-3  "  >
<label  class="col-sm-3 col-form-label" >有效期止</label>
	 <div class="col-sm-9" >                          
	   <input type="date" class="form-control "  >    
	 </div>
</div>

图1、
在这里插入图片描述
图2、
在这里插入图片描述

二、使用bootstrap-datepicker时间日期控件

下载地址:https://github.com/uxsolutions/bootstrap-datepicker
文档说明:https://bootstrap-datepicker.readthedocs.io/en/latest/index.html
下载文件夹如图3所示:
在这里插入图片描述
下载文件夹中的一个dist文件夹保存三个文件夹有css与js以及locales文件夹复制粘贴到你的项目文件中即可。其中locales文件夹中保存的是各国语言js文件想显示中文日期就要引入这个文件

二、在HTML中引用bootstrap-datepicker时间日期控件

引用CSS HTML

<link href="../assets/vendor/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="../assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
<link href="../assets/vendor/bootstrap/css/bootstrap-datepicker.css" rel="stylesheet">
<link href="../assets/vendor/bootstrap/css/bootstrap-select.min.css" rel="stylesheet">
  

引用js HTML

 <script src="../assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
 <script src="../assets/vendor/bootstrap/js/bootstrap-select.min.js"></script>
 <script src="../assets/vendor/bootstrap/js/bootstrap-datepicker.js"></script>
 <script src="../assets/vendor/bootstrap/js/language/bootstrap-datepicker.zh-CN.min.js"></script>

其中bootstrap-datepicker.zh-CN.min.js是时间日期汉化包,引入CSS与JS文件后即可使得,只需将Input标签类型改为type="text即可,由于我使用了两个以上的日期输入框这里采用属性值来初始化bootstrap-datepicker日期控件,data-* 属性是 HTML5 新增的用于存储私有页面后应用的自定义数据 “form_datetime”将在script中被初始化。

下面展示一些 内联代码片

<div class="row mb-3 mt-3  "  >
<label  class="col-sm-3 col-form-label" >有效期止</label>
 <div class="col-sm-9" >                          
   <input type="text" class="form-control date form_datetime" >     
 </div>
</div>

初始化bootstrap-datepicker日期控件

见代码 内联代码片

<script type="text/javascript">
    //多选下拉框初始化
    $(function () {
      $('.selectpicker').selectpicker();
      $('.selectpicker').selectpicker('refresh');
      $('.selectpicker').selectpicker('render');
    });
    //  鼠标悬停提示信息初始化
    $(document).ready(function () {
      $('[data-toggle="tooltip"]').tooltip();
    });
   //初始化日期
   var $date = $(".form_datetime");
    $(document).ready(function () { 
        $date.datepicker({
            language: "zh-CN", //中文
            autoclose: true, //自动关闭
            // clearBtn: true, //显示'清空'按钮
            // todayBtn: true, //显示'今天'按钮
            todayHighlight: true, //当天高亮
            keyboardNavigation:true,           
            format: "yyyy-mm-dd", //日期格式
            orientation: 'bottom'
        });
       
    });

如图4所示:
在这里插入图片描述
可以看到时间日期显示了,日期格式如图5所示:
在这里插入图片描述

三、bootstrap-datepicker时间日期控件修改位置错误问题

如图4所示时间日期显示框靠上了,没有显示到正确位置,打开bootstrap-datepicker.js文件注意这里打开的不是压缩文件找到676行以Datepicker for Bootstrap v1.9.0板本为准
下面展示一些 内联代码片

	});
			
			var left = offset.left - appendOffset.left;
			var top = offset.top - appendOffset.top;

			if (this.o.container !== 'body') {
				top += scrollTop;
			}

			this.picker.removeClass(
				'datepicker-orient-top datepicker-orient-bottom '+
				'datepicker-orient-right datepicker-orient-left'
			);

将var top = offset.top - appendOffset.top;改为var top = offset.top +15;

下面展示一些 内联代码片

var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
			var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
			var left = offset.left - appendOffset.left;
			var top = offset.top +15;

			if (this.o.container !== 'body') {
				top += scrollTop;
			}

如图5所示:
在这里插入图片描述
显示正常

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杏雨1969

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值