bootstrap-datepicker实现只能选择每一年的某一个月份

1、问题描述

        最近碰到一个需求,要求日期控件选择的时候,只能选择某一年的1月份。

2、解决方法

        使用setStartDate()和setEndDate()函数对日期选择框进行范围限制。

3、我的代码

        【免费】bootstrap-datepicker实现只能选择每一年的某一个月份资源-CSDN文库

3.1、有bug的代码

        注意:这段代码虽然也实现了“只能选择某个年份的1月份”的效果,但是是有Bug的。这个bug比较好玩,所以我特地放在这里。可以多点点试试看。

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>有bug的</title></head><script type="text/javascript" src="./js/jquery.min.js"></script><script type="text/javascript" src="./js/bootstrap-datepicker.min.js"></script><script type="text/javascript" src="./js/bootstrap-datepicker.zh-CN.min.js"></script><link rel="stylesheet" type="text/css" href="./css/bootstrap-datepicker3.min.css" /><body><script type="text/javascript">$(function() {//年-月格式$('.YearMonth').datepicker({format: 'yyyy-mm',startView: 2, //日期控件打开时候显示的视图 2  代表年份maxViewMode: 2, //最大视图模式 默认值 4  2代表年份minViewMode: 1, //最小视图模式 设置视图模式的最小限制 2  代表年份autoclose: 'true',todayHighlight: 'true',language: 'zh-CN',orientation: 'button',clearBtn: true})var flag = false;$("#IndexDateBegin").change(function() {console.log($(this).val())if (flag) {$(this).datepicker("setStartDate", null);$(this).datepicker("setEndDate", null);flag = false;console.log("flag=" + flag)}});$("#IndexDateBegin").datepicker().on('changeYear', function(e) {console.log("changeYear");console.log(e.date)var sCapacity = $("#Capacity").val();var currYear = String(e.date).split(" ")[3];if (!flag) {$(this).datepicker("setEndDate", currYear + "-01");$(this).datepicker("setStartDate", currYear + "-01");flag = true;}console.log(currYear + ":" + flag);});});</script>日期:<input type="text" class="YearMonth" name="IndexDateBegin" id="IndexDateBegin" value="" onfocus="this.blur();" /></body>
</html>

       

3.2、正确的代码

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>正确的</title></head><script type="text/javascript" src="./js/jquery.min.js"></script><script type="text/javascript" src="./js/bootstrap-datepicker.min.js"></script><script type="text/javascript" src="./js/bootstrap-datepicker.zh-CN.min.js"></script><link rel="stylesheet" type="text/css" href="./css/bootstrap-datepicker3.min.css" /><body><script type="text/javascript">window.onload=function(){// $("#IndexDateBegin").datepicker("setStartDate", null);// $("#IndexDateBegin").datepicker("setEndDate", null);// if($("#IndexDateBegin").val()==""){// 	$("#IndexDateBegin").val(new Date().getFullYear()+"-0"+(new Date().getMonth()+1));// }}$(function() {//年-月格式$('.YearMonth').datepicker({format: 'yyyy-mm',startView: 2, //日期控件打开时候显示的视图 2  代表年份maxViewMode: 2, //最大视图模式 默认值 4  2代表年份minViewMode: 1, //最小视图模式 设置视图模式的最小限制 2  代表年份autoclose: 'true',todayHighlight: 'true',language: 'zh-CN',orientation: 'button',clearBtn: true//useCurrent: false})//flag的作用就是判断,datepicker日期控件是否点了“年份”,如果点了“年份”,则根据选中的“年份”限定“月份”范围只能是当前选中“年份”的1月份!var flag = false;//用于记录changeYear的次数,因为datepicker控件的默认年份是当前年份。var clickNum=0;// $(".clear").click(function(){// 	console.log("clear")// 	alert("1223");// });$("#IndexDateBegin").change(function() {if($(this).val()==""){clickNum=0;//alert("1223");}console.log($(this).val())if (flag) {$(this).datepicker("setStartDate", null);$(this).datepicker("setEndDate", null);flag = false;console.log("flag=" + flag)}});$("#IndexDateBegin").datepicker().on('changeYear', function(e) {clickNum=clickNum+1;//$(this).val("");console.log("changeYear");console.log(e.date)var sCapacity = $("#Capacity").val();var currYear = String(e.date).split(" ")[3];if(!flag){if(clickNum==1){$(this).datepicker("setEndDate", currYear + "-01");}if(clickNum>1){$(this).datepicker("setEndDate", currYear + "-01");$(this).datepicker("setStartDate", currYear + "-01");}flag = true;}console.log(currYear + ":" + flag);});});</script>日期:<input type="text" class="YearMonth" name="IndexDateBegin" id="IndexDateBegin" value="" onfocus="this.blur();" /></body>
</html>

         注意:其实这个正确代码也有点小bug,只是不影响使用!

        只要你别每次点一半(只点年份不点月份)就清除了,就没有问题了。碰到这个bug,只要点进年份,再点进月份。只要完整的把年份月份都点完,那么日期框的所有年份又都是可用的了!

4、运行效果

        

5、总结

        因为网上没有查到现成的代码可以用,所以只能自己写了。网上查资料的时候看到了这篇文章关于javascript:更改时如何获取Bootstrap Datepicker的年份和月份 | 码农家园 (codenong.com)

给了我启发! 

6、参考资料

关于javascript:更改时如何获取Bootstrap Datepicker的年份和月份 | 码农家园 (codenong.com) 

bootstrap-datepicker — bootstrap-datepicker documentation 

GitHub - uxsolutions/bootstrap-datepicker: A datepicker for twitter bootstrap (@twbs) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/107953.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始的PICO教程(1)Pico游戏开发项目配置

从零开始的PICO教程&#xff08;1&#xff09;Pico游戏开发项目配置 文章目录 从零开始的PICO教程&#xff08;1&#xff09;Pico游戏开发项目配置一、前言1、大纲 二、成为Pico开发者1、注册 PICO 开发者帐号2、创建组织3、创建应用 三、导入PICO的SDK1、PICO设备开启 “开发者…

睿思BI制作数据分析报告并导出到word中

数据分析报告是一种常用的分析应用文体&#xff0c;它是数据分析项目的目的、方法、过程、结论以及可行性建议等内容的完整展示&#xff0c;是数据背后真实的业务水平的客观体现&#xff0c;是管理者做出科学、严谨决策的依据。睿思BI在数据报表中配置数据分析报告&#xff0c;…

【LeetCode: 1462. 课程表 IV:拓扑排序+图+广度优先搜索】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Mobileye CEO来华:只有能控制住成本的公司,才能活下来

‍作者|德新 编辑|王博 上午9点近一刻&#xff0c;Mobileye CEO Amnon Shuashua步入酒店的会议室。由于Amnon本人是以色列希伯来大学的计算机科学教授&#xff0c;大部分人更习惯称他为「教授」。 时近以色列的新年&#xff0c;这趟教授的中国之行安排十分紧凑。 他率领了一…

统计表和流程分析,也能同屏呈现_三叠云

表单统计&流程分析 路径 表单设计 >> 表单设置 >> 拓展设置 >> 表单统计 功能简介 新增表单统计、流程分析功能&#xff08;Beta版&#xff09;。可在当前列表&#xff0c;直接看到表单的统计表和流程分析数据统计图表。 1. 统计表&#xff1a;统计…

密码学概述

密码学的概念 密码&#xff0c;最初的目的是用于对信息加密&#xff0c;计算机领域的密码技术种类繁多。但随着密码学的运用&#xff0c;密码还被用于身份认证、防止否认等功能上。密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则&#xff0c;变…

大数据Flink(七十四):SQL的滑动窗口(HOP)

文章目录 SQL的滑动窗口(HOP) SQL的滑动窗口(HOP) 滑动窗口定义:滑动窗口也是将元素指定给固定长度的窗口。与滚动窗口功能一样,也有窗口大小的概念。不一样的地方在于,滑动窗口有另一个参数控制窗口计算的频率(滑动窗口滑动的步长)。因此,如果滑动的步长小于窗口大…

关于FastReport中特殊字符中括号[]的处理

在FastReport报表中&#xff0c;TextObject控件&#xff0c;RichObject控件等&#xff0c;会默认使用英文的中括号[]作为特殊字 符&#xff0c;用于表达式的计算。 这样&#xff0c;在程序中如果对 该控件进行赋值(值中带有中括号[])&#xff0c;则程序就会出错。 如果不需要…

互联网医院App开发:构建医疗服务的技术指南

互联网医院App的开发是一个复杂而具有挑战性的任务&#xff0c;但它也是一个充满潜力的领域&#xff0c;可以为患者和医疗专业人员提供更便捷的医疗服务。本文将引导您通过一些常见的技术步骤来构建一个简单的互联网医院App原型&#xff0c;以了解该过程的基本概念。 技术栈选…

YOLO物体检测系列3:YOLOV3详解

&#x1f388;&#x1f388;&#x1f388;YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV3提出论文&#xff1a;《Yolov3: An incremental improvement》 1、YOLOV3改进 这张图讲道理真的过分了&#xff01;&#xff01;&#xff01;我不是针对谁&#xff0c;在…

前端错误监控

目录 js运行时错误 普通错误 错误捕获 捕获到的错误信息 未捕获的Promise错误 错误捕获方式 更推荐的做法 关于Vue 的 errorHandler 关于 React 的 ErrorBoundary 网络请求错误 静态资源加载失败 如何监控静态资源加载失败呢&#xff1f; Script error&#xff0c;…

Linux CentOS7修改命令行提示符

在CentOS操作系统中&#xff0c;命令和文件是我们与计算机进行交互的重要方式之一。有时候我们可能需要对某些命令、变量或文件进行修改&#xff0c;以满足特定的需求或提高工作效率。 本人在文章《Linux CentOS7命令及命令行》中对命令行提示符的修改作了初步介绍&#xff0c…