bootstrap-datetimepicker 只选择月份出现1899问题

需求

最近在使用bootstrap-datetimepicker中,遇到一个需求,要求只能选择月份,本以为是件很简单的问题,即修改一下格式就可以 --> 'yyyy-mm'变为“mm”就行,结果意想不到的问题出现了:

在第一次点选之后还算正常,结果第二次再次点选的时候,就会弹出1899,瞬间懵了~~~~

效果如下:

当然结果不影响,但是影响客户体验啊~~~~


解决过程

当时在想,要不要去动源码,但是一旦动的话,就可能会影响其他功能,然后就会出现‘牵一发而动全身’的效果,想想还是算了。

绞尽脑汁中~~~

突然,来了一个灵感,你说,我现在只要求显示月份,那我直接把年隐藏了不就行了,说干就干,然后就出现了下面的代码:

html代码如下:

 <label class="inline_block" for="month">月份</label>
 <input type="text" id='month' name="month" maxlength="5" autocomplete="off" 
         class="dkInput queryField dkTab form-control dkMonth dkText inline_block" style="width:130px;" readonly/> 

js代码(源代码,含有bug的)

$(function(){
    $(".dkMonth").datetimepicker({format: 'mm',minView:3,startView:3,clearBtn:true,}); //选择日期
})

修改后:

$(function(){
    $(".dkMonth").datetimepicker({format: 'mm',minView:3,startView:3,clearBtn:true,}); //选择日期
    hiddenYear();
})
function hiddenYear(){
	var dtpickerMonthsArr = $(".datetimepicker-months");
	var regExp = new RegExp("(class=\"switch\">)(\\d{4})(</th>)");
	var innerHtmlStr = dtpickerMonthsArr[1].innerHTML.replace("prev","").replace("next","").replace(regExp," hidden ></th><th colspan=\"5\" style=\"width:145px;\"></th>");
	dtpickerMonthsArr[1].innerHTML=innerHtmlStr;
}

效果如下:

完美解决~~~~~


 

题外

当时在使用bootstrap-datetimepicker过程中,曾经遇到这么几个问题

  1. datetimepicker的清空按钮;
  2. datetimepicker的触发事件;
  3. format格式化问题;

一、下来来解决第一个问题,在官网上,是没有清空这一选项的,为解决这一问题,也费了不少事,最后在这里,-.-是一个datetimepicker的属性,‘clearBtn:true’,你说蛋疼不蛋疼!具体其他属性可参考:

https://blog.csdn.net/csdn_yudong/article/details/77189608

https://www.jianshu.com/p/663f2a86dd22

二、所谓的这个触发事件,就是change事件,官网上也有,也可以参考我这个,代码如下:

$("#complaintTime").on('changeMonth',function(ev){
		var month = ev.date.getMonth()+1;
            //以下功能是根据选择的月份显示不同的输入框,可以忽略
		$(".planAndOutput").hide();
		//.siblings().hide().end()
		if(month == 1){
			$("#quarterOutput").val("");
			$("#quarterPlan").val("");
			$("#monthPlan").val("");
			$("#monthOutput").val("");
			$("#dktable4").show();
		}else if(month%3 ==1){
			$("#yearOutput").val("");
			$("#yearPlan").val("");
			$("#monthPlan").val("");
			$("#monthOutput").val("");
			$("#dktable3").show();
		}else{
			$("#quarterOutput").val("");
			$("#quarterPlan").val("");
			$("#yearOutput").val("");
			$("#yearPlan").val("");
			$("#dktable2").show();
		}
		//$("#111").show();
	 });

三、format的问题,当然,对于初学者估计也得调上一会,代码如下:

//选择年月日的       
$('#datetimepicker').datetimepicker({  
        format: 'yyyymmdd',  
         weekStart: 1,  
         autoclose: true,  
         startView: 2,  
         minView: 2,  
         forceParse: false,  
         language: 'cn'  
    });

 

//选择年月的   
$('#datetimepicker').datetimepicker({  
        format: 'yyyymm',  
         weekStart: 1,  
         autoclose: true,  
         startView: 3,  
         minView: 3,  
         forceParse: false,  
         language: 'cn'  
    });
//选择年的  
$('#datetimepicker').datetimepicker({  
        format: 'yyyymm',  
         weekStart: 1,  
         autoclose: true,  
         startView: 4,  
         minView: 4,  
         forceParse: false,  
         language: 'cn'  
    });

只选择‘月’的最上面有~~~

### 回答1: bootstrap-datetimepicker 是一个强大的日期时间选择插件,它提供了双时间选择的功能。使用 bootstrap-datetimepicker,你可以在网页中方便地选择起始时间和结束时间。 要实现双时间选择,首先需要在 HTML 文件中引入 bootstrap-datetimepicker 的相关文件。然后,在需要显示双时间选择的输入框上添加对应的 class,比如"datetimepicker"。 接下来,在 JavaScript 中使用 $("#输入框的ID").datetimepicker() 来初始化双时间选择插件。你可以在初始化的时候设置一些参数,比如设置可选时间范围,或者指定时间格式等。 当你点击输入框时,就会弹出一个日期时间选择器。你可以使用上下箭头来选择日期和时间,也可以直接在输入框中手动输入。当你选择好起始时间和结束时间后,可以点击确定按钮来关闭选择器,并将选择的时间显示在输入框中。 双时间选择的输入框中会同时显示起始时间和结束时间,以指定时间范围。你也可以在选择器的界面上看到一个日历,以帮助你选择起始日期和结束日期。 总的来说,bootstrap-datetimepicker 是一个方便易用的日期时间选择插件,它可以帮助你实现双时间选择功能。无论是建立预约系统,还是进行时间范围查询,它都是一个非常有用的工具。 ### 回答2: bootstrap-datetimepicker是一个基于Bootstrap框架的日期时间选择器插件。它提供了一种简单易用的方式,让用户可以方便地选择日期和时间。 双时间选择指的是用户可以选择一个起始时间和一个结束时间。这种功能在一些需要时间段选择的场景中非常常见,比如航班预订、酒店预订等等。 使用bootstrap-datetimepicker实现双时间选择非常简单。首先,我们需要引入相关的库文件和样式表。然后,在HTML页面中创建两个输入框,分别用于显示起始时间和结束时间。接着,使用jQuery选择器找到这两个输入框,并调用datetimepicker()方法初始化它们。 具体的代码如下所示: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>双时间选择</title> <link rel="stylesheet" href="bootstrap.min.css"> <script src="jquery.min.js"></script> <script src="bootstrap.min.js"></script> <script src="moment.min.js"></script> <script src="bootstrap-datetimepicker.min.js"></script> </head> <body> <div class="container"> <h2>双时间选择</h2> <div class="form-group"> <label for="start-time">起始时间:</label> <input type="text" class="form-control" id="start-time"> </div> <div class="form-group"> <label for="end-time">结束时间:</label> <input type="text" class="form-control" id="end-time"> </div> </div> <script> $(function() { $('#start-time').datetimepicker(); $('#end-time').datetimepicker(); }); </script> </body> </html> ``` 通过上述代码,我们可以在页面上看到两个日期时间选择框。当用户点击输入框时,会弹出一个日期时间选择器,用户可以通过它来选择日期和时间。用户选择完毕后,选择器会自动将日期时间填充到相应的输入框中。 这样,我们就实现了使用bootstrap-datetimepicker进行双时间选择的效果。当然,我们还可以根据具体需求,进一步自定义日期时间选择的样式和功能。 ### 回答3: bootstrap-datetimepicker是一个基于Bootstrap框架的日期时间选择器插件。它允许用户同时选择起始时间和结束时间。 使用bootstrap-datetimepicker双时间选择,首先需要在HTML文件中引入相关的CSS和JavaScript文件。然后,通过指定相应的class或ID来创建两个日期时间选择器。 在HTML代码中,我们可以创建两个输入框和两个按钮来分别表示起始时间和结束时间。通过为输入框添加相应的class或ID,即可初始化日期时间选择器。例如: ``` <input type="text" class="datetimepicker-start" /> <input type="text" class="datetimepicker-end" /> <script type="text/javascript"> $(function () { $('.datetimepicker-start').datetimepicker(); $('.datetimepicker-end').datetimepicker(); }); </script> ``` 上述代码中,`datetimepicker-start`和`datetimepicker-end`分别为起始时间和结束时间的class。通过调用`.datetimepicker()`函数,即可初始化日期时间选择器。 初始化后,用户即可在输入框中点击选择日期和时间。同时,可以根据需要自定义日期时间格式、起始日期、最小/最大日期等选项。 此外,bootstrap-datetimepicker还提供了一些事件,可以让我们在选择日期时间后执行相应的操作,例如更新其他页面元素的内容。 总的来说,bootstrap-datetimepicker双时间选择功能简单易用,可以满足大部分日期时间选择的需求。通过添加相应的class或ID,并调用相关函数,即可在网页中实现双时间选择功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值