最终效果

代码实现

  1. <script>
  2. $(function () {
  3. $(".j-calendar").calendar({
  4. date: '2017-08-03',
  5. callback: function () {
  6. var date = new Date($(this).attr("year"), $(this).attr("month"), $(this).attr("day"));
  7. alert(date);
  8. },
  9. loadinfo: function () {
  10. var liList = $(".j-calendar").find('li');
  11. $.each(liList, function(i, item) {
  12. if ($(item).attr("day") == "") {
  13. $(item).find(".m-CYwork").html("¥2580");
  14. }
  15. });
  16. }
  17. });
  18. });
  19. </script>
  1. /*
  2. * @author:Cheryl
  3. * @made:2015-12-31
  4. */
  5.  
  6. (function (window, $, undefined) {
  7. $.canlendarClass = {
  8. defaults: {
  9. date: new Date(),
  10. canderShwType: "default",
  11. callback: function () {
  12.  
  13. },
  14. loadinfo: function () {
  15.  
  16. }
  17. },
  18. hrtnDay: ,
  19. hrtnOne: ,
  20. hrtnLast: ,
  21. title: "<ul class='m-CYul-tit m-CYul'><li>周日</li><li>周一</li><li>周二</li><li>周三</li><li>周四</li><li>周五</li><li>周六</li></ul>",
  22. canComplete: function (d) {
  23. this.canDayone(d);
  24. this.canDay(d);
  25. },
  26. canDayone: function (d) {
  27. var dayone = new Date(d.getFullYear(), d.getMonth(), );
  28. this.hrtnOne = dayone.getDay();//0 1 2 3 4 5 6
  29. this.canDay(d);
  30. var dayLast = new Date(d.getFullYear(), d.getMonth(), this.hrtnDay);
  31. this.hrtnLast = dayLast.getDay();
  32. },
  33. canDay: function (d) {
  34. var year = d.getFullYear();
  35. var month = d.getMonth() + ;
  36. //判断拥有多少天
  37. switch (month) {
  38. case :; case :; case :; case :; case :; case :; case : this.hrtnDay = ; break;
  39. case :; case :; case :; case : this.hrtnDay = ; break;
  40. case : if (year % == && year % != || year % == ) { this.hrtnDay = ; } else { this.hrtnDay = ; }; break;
  41. default: console.log("请您输入正确的月份。"); break;
  42. }
  43. },
  44. }
  45. $.extend($.fn, {
  46. calendar: function (option) {
  47. if ($(this)[] == null || $(this)[] == undefined) {
  48. return;
  49. };
  50. $.canlendarClass.defaults.canderShwType = "default";
  51. for (var i = ; i < ; i++) {
  52. //参数合并
  53. $.canlendarClass.defaults = $.extend($.canlendarClass.defaults, $.extend(option || {}) || {});
  54. var d = new Date(add(new Date($.canlendarClass.defaults.date) || new Date(), "m", i));
  55. //参数计算
  56. $.canlendarClass.canComplete(d);
  57. //添加
  58. $(this).addChild(d);
  59. }
  60. //给这些li添加方法
  61. $(this).children("li").click(function () {
  62. $(this).addClass("active").siblings("li").removeClass("active");
  63. });
  64. //调用加载数据的方法
  65. $.canlendarClass.defaults.loadinfo();
  66. $(this).children("li").on("click", $.canlendarClass.defaults.callback);
  67. //样式添加|当天标蓝
  68. if ($.canlendarClass.defaults.canderShwType == "small") {
  69. $(this).addClass("s-CY m-CYul");
  70. /*var eqli=$.canlendarClass.hrtnDay<=$.canlendarClass.defaults.day?$.canlendarClass.hrtnDay:$.canlendarClass.defaults.day;
  71. $(this).children("li[day="+eqli+"]").addClass("active");*/
  72. } else {
  73. $(this).addClass("d-CY m-CYul");
  74. };
  75. },
  76. addChild: function (d) {
  77.  
  78. // $(this).html("");
  79. $(this).append(
  80. "<div class=\"yearMonth\">" +
  81. "<h2><span id=\"year\">" + d.getFullYear() + "年</span><span id=\"month\">" + parseInt(d.getMonth() + ) + "月</span></h2>" +
  82. "</div>" +
  83. $.canlendarClass.title);
  84. for (var i = ; i < $.canlendarClass.hrtnOne; i++) {
  85. $(this).append('<li class="noday"></li>');
  86. };
  87.  
  88. var strsld = "";
  89. switch ($.canlendarClass.defaults.canderShwType) {
  90. case "default":
  91. strsld = "<ul class='m-CYwork'></ul>";
  92. break;
  93. case "small":
  94. strsld = "";
  95. break;
  96. default:
  97. break;
  98. }
  99. for (var i = ; i < $.canlendarClass.hrtnDay; i++) {
  100. $(this).append('<li year="' + (d.getFullYear()) + '" month="' + (d.getMonth() + ) + '" day="' + (i + ) + '"><span>' + (i + ) + '</span>' + strsld + '</li>');
  101. };
  102. for (var i = ; i < ( - $.canlendarClass.hrtnLast) ; i++) {
  103. $(this).append('<li class="noday"></li>');
  104. };
  105. var eqli = $.canlendarClass.hrtnDay <= $.canlendarClass.defaults.day ? $.canlendarClass.hrtnDay : $.canlendarClass.defaults.day;
  106. $(this).children("li[day=" + new Date().getDate() + "]:first").addClass("m-CYtoday");
  107.  
  108. },
  109. });
  110. })(window, jQuery);
  111.  
  112. var add = function (datetiem, strInterval, Number) {
  113. var dtTmp = datetiem;
  114. switch (strInterval) {
  115. case 's': return new Date(Date.parse(dtTmp) + ( * Number));
  116. case 'n': return new Date(Date.parse(dtTmp) + ( * Number));
  117. case 'h': return new Date(Date.parse(dtTmp) + ( * Number));
  118. case 'd': return new Date(Date.parse(dtTmp) + ( * Number));
  119. case 'w': return new Date(Date.parse(dtTmp) + (( * ) * Number));
  120. case 'q': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number * , dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  121. case 'm': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, , dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  122. case 'y': return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  123. }
  124. }

js封装日历控件的更多相关文章

  1. 2.23 js处理日历控件(修改readonly属性)

    2.23 js处理日历控件(修改readonly属性) 前言    日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如 ...

  2. JS实现日历控件选择后自动填充

    最近在做人事档案的项目,在做项目的初期对B/S这块不是很熟悉,感觉信心不是很强,随着和师哥同组人员的交流后发现,调试程序越来越好了,现在信心是倍增,只要自己自己踏实的去研究.理解代码慢慢的效果就出来了 ...

  3. JS编写日历控件(支持单日历 双日历 甚至多日历等)

    前言: 最近几天都在研究日历控件编写,当然前提我要说明下,当然看过别人写的源码 所以脑子一热 就想用自己的编码方式 来写一套可扩展性 可维护性 性能高点的代码控件出来,就算练习练习下,所以前几天晚上下 ...

  4. selenium+Python(Js处理日历控件)

    日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用js去掉 ...

  5. Selenium2学习(十七)-- js处理日历控件(修改readonly属性)

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  6. selenium webdriver——JS操作日历控件

    一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法 比如 但是,有的日期控件是readonly的 比如12 ...

  7. selenium - js日历控件处理

    # 13. js处理日历控件 ''' 在web自动化的工程中,日历控制大约分为两种: 1. 可以直接输入日期 2. 通过日历控件选择日期 基本思路: 利用js去掉readonly属性,然后直接输入时间 ...

  8. TWaver初学实战——如何在TWaver属性表中添加日历控件?

    在日期输入框中添加日历控件,是一种非常流行和实用的做法.临渊羡鱼不如退而写代码,今天就看看在TWaver中是如何实现的.   资源准备   TWaver的在线使用文档中,就有TWaver Proper ...

  9. 自己用js写的两个日历控件

    前一阵写了两个日历控件,做了简单的封装,发出来共朋友们参考. 第一个日历控件,条状的日历. (使用方法:调用initBarTime(id,evn),第一个参数是要渲染div的id,第二个参数是点击日期 ...

随机推荐

  1. RSA/DSA 密钥的工作原理

    下面从整体上粗略的介绍了 RSA/DSA 密钥的工作原理.让我们从一种假想的情形开始,假定我们想用 RSA 认证允许一台本地的 Linux 工作站(称作 localbox)打开 remotebox 上 ...

  2. (八)Oracle学习笔记—— 触发器

    1. 触发器简介 触发器在数据库里以独立的对象存储,类似于过程(procedure)和函数(function),都有声明,执行和异常处理过程的PL/SQL块.它与存储过程和函数不同的是,存储过程与函数 ...

  3. myBatis的引出

    jdbc 优点:简单易学,上手快,非常灵活构建sql,效率高. l缺点:代码繁琐,难以写出高质量的代码(资源的释放,SQL注入安全性等),开发者关注多,又要写业务逻辑,又要关注对象的创建和销毁. Hi ...

  4. Android开发——跟随手指的小球实现

      今天要实现的是一个跟随手指的小球,说白了就是让小球按着手指滑动的轨迹运动,实现起来还是比较容易的. 用到的类是drawView,我们先自定义一个DrawView组件. DrawView.java: ...

  5. git问题:git提交的时候总是提示key加载失败,总是需要手工将key加到Pageant中

    问题描述: 重装过一次系统,在重装之前git+tortoisegit配合很好,提交的时候都能自动加载ppk,但是重装系统后,也重新生成pulic key上传到了服务器,但是每次提交的时候都提示key加 ...

  6. Team Foundation Server安装指南(转载)

    1.说明 Team Foundation Server(以下简称VSTF)的安装并不是一件轻松的事情,在安装的过程中相信很多人都或多或少碰到一些问题而安装不成功,虽然手头有微软提供的所谓安装手册,也曾 ...

  7. 从12306网站新验证码看Web验证码设计与破解

    2015年3月16日,铁路官方购票网站12306又出新招,在登录界面推出了全新的验证方式,用户在填写好登录名和密码之后,还要准确的选取图片验证码才能登陆成功.据悉,12306验证码改版后,目前所有抢票 ...

  8. 如何解决MySQL连接超时关闭

    最近做网站有一个站要用到WEB网页采集器功能,当一个PHP脚本在请求URL的时候,可能这个被请求的网页非常慢慢,超过了mysql的 wait-timeout时间,然后当网页内容被抓回来后,准备插入到M ...

  9. bitnami-redmineserver迁移

    1. 背景 在Redmineserver迁移过程中.假设前后两个Redmine的版本号一样,事情就简单,假设版本号不一样,就有可能面临两个版本号数据库不兼容.那就比較麻烦了.本文旨在介绍数据库不兼容时 ...

  10. Atitit.字节数组转字符串 base64 base16 Quoted-printable 编码原理设计 attilax 总结

    Atitit.字节数组转字符串 base64 base16 Quoted-printable 编码原理设计 attilax 总结 1. Base64编码, 1 2. Base64实现转换原理1 3.  ...