仿微博的JQuery日历控件

news/2024/7/11 1:42:01 标签: jquery, function, calendar, table, class, 日历
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

就是常见的选取日期的日历控件而已,还没到的日期无法选择,其它的都和正常日历控件差不多,先看看演示效果吧。

class="tiemin" type="text" />
class="inline-block" style="width:200px">

实现原理主要是处理class="tags" href="/tags/TABLE.html" title=table>table,生成tr td,其中最重要的是如何找出每月第一天是星期几,然后就能对应出这个月的余下天数。

日历控件网上一搜一大把,但是我觉得自己写一遍还是有好处的。代码可以查看本页源代码,下面是js代码:

class="language-html"><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/class="tags" href="/tags/JQUERY.html" title=jquery>jquery/1.6.1/class="tags" href="/tags/JQUERY.html" title=jquery>jquery.min.js"></script>
   <script type="text/javascript">
       //全部包裹
       var sookerTime = (class="tags" href="/tags/FUNCTION.html" title=function>function ($) {
           var OBJ;
           class="tags" href="/tags/FUNCTION.html" title=function>function isLeap(year) { return (year % 100 == 0 ? (year % 400 == 0 ? 1 : 0) : (year % 4 == 0 ? 1 : 0)); }
           class="tags" href="/tags/FUNCTION.html" title=function>function isValid(d) { return (d.getTime() - (new Date()).getTime() < 0) ? true : false; } //是否在今天以后
           class="tags" href="/tags/FUNCTION.html" title=function>function setDate(year, month) {     //建立日期class="tags" href="/tags/TABLE.html" title=table>table
               var n1 = new Date(year, month, 1),
                   firstday = n1.getDay(),
                   mdays = new Array(31, 28 + isLeap(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
                   rows = Math.ceil((mdays[month] + firstday) / 7),
                   class="tags" href="/tags/TABLE.html" title=table>table = $("<class="tags" href="/tags/TABLE.html" title=table>table>", { "class": "days" }),
                   tbody = $("<tbody>");
               $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar").find(".days").remove();
               for (var i = 0; i < rows; i++) {
                   var tr = $("<tr>");
                   for (j = 0; j < 7; j++) {
                       var idx = i * 7 + j,
                           d = idx - firstday + 1;
                       if (d <= 0 || d > mdays[month]) {   //无效日期
                           d = " "
                       }
                       var td = $("<td>", { html: d }).appendTo(tr);
                       if (isValid(new Date(year, month, d))) {  //今天以后的时间都不绑定时间
                           td.addClass("before");
                           td.hover(class="tags" href="/tags/FUNCTION.html" title=function>function () {
                               $(this).addClass("day");
                           }, class="tags" href="/tags/FUNCTION.html" title=function>function () { $(this).removeClass("day"); }).click(class="tags" href="/tags/FUNCTION.html" title=function>function () {
                               OBJ.attr("value", $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar .year").attr("value") + "-" + (parseInt($("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar .month").attr("value")) + 1) + "-" + $(this).text());
                               $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar").css("display", "none");
                           });
                       }
                   }
                   tr.appendTo(tbody);
               }
               tbody.appendTo(class="tags" href="/tags/TABLE.html" title=table>table);
               $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar").append(class="tags" href="/tags/TABLE.html" title=table>table);
           }
           class="tags" href="/tags/FUNCTION.html" title=function>function createTime() {
               var class="tags" href="/tags/CALENDAR.html" title=calendar>calendar = $("<div>", { "class": "pc_caldr", id: "class="tags" href="/tags/CALENDAR.html" title=calendar>calendar" }),

                       td = new Date(),
                       of = OBJ.offset();
               if (document.getElementById("class="tags" href="/tags/CALENDAR.html" title=calendar>calendar")) {
                   class="tags" href="/tags/CALENDAR.html" title=calendar>calendar = $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar").css({ left: of.left, top: of.top + 18, display: "block" });
                   setDate(td.getFullYear(), td.getMonth());
                   $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar .year").attr("value", td.getFullYear());
                   $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar .month").attr("value", td.getMonth());
               } else {
                   var se = "<div class='selector'><select class='month'><option value='0'>一月</option><option value='1'>二月</option><option value='2'>三月</option><option value='3'>四月</option><option value='4'>五月</option><option value='5'>六月</option><option value='6'>七月</option><option value='7'>八月</option><option value='8'>九月</option><option value='9'>十月</option><option value='10'>十一月</option><option value='11'>十二月</option></select><select class='year'><option value='2009'>2009</option><option value='2010'>2010</option><option value='2011'>2011</option></select></div><ul class='weeks'><li>日</li><li>一</li><li>二</li><li>三</li><li>四</li><li>五</li><li>六</li></ul>";
                   class="tags" href="/tags/CALENDAR.html" title=calendar>calendar.css({ left: of.left, top: of.top + 18 }).html(se).appendTo($("body"));
                   setDate(td.getFullYear(), td.getMonth());
                   $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar .year").attr("value", td.getFullYear());
                   $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar .month").attr("value", td.getMonth());
                   bindClick();
               }
           }
           class="tags" href="/tags/FUNCTION.html" title=function>function bindClick() {   //给下拉列表绑定时间
               var a = $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar .month"),
                  b = $("#class="tags" href="/tags/CALENDAR.html" title=calendar>calendar .year");
               a.change(class="tags" href="/tags/FUNCTION.html" title=function>function () {
                   setDate(b.attr("value"), $(this).attr("value"));
               });
               b.change(class="tags" href="/tags/FUNCTION.html" title=function>function () {
                   setDate($(this).attr("value"), a.attr("value"));
               });
           }
           return {
               init: class="tags" href="/tags/FUNCTION.html" title=function>function (obj) {   //返回调用的接口              
                   OBJ = obj;
                   createTime();
               }
           }
       })(jQuery);

       //使用方法
       $(".tiemin").focus(class="tags" href="/tags/FUNCTION.html" title=function>function(){ 
          sookerTime.init($(this));
        });
         
   </script>

本文引自:http://www.nowamagic.net/librarys/veda/detail/134


http://www.niftyadmin.cn/n/1732276.html

相关文章

CSS中DIV定位

网上也有不少使用div css进行布局的教程&#xff0c;却存在很多缺陷&#xff0c;一是对css的布局模型讲解不清楚&#xff0c;让人很难理解相对定位、浮动等概念&#xff1b;二是虽然避免了“表格套表格”的缺点&#xff0c;却带来了“div 套 div”的缺点&#xff0c;过量使用d…

我写了一个面向源码阅读者的 UI 框架(基于 Vue)

轱辘 UI 官方文档 GitHub 轱辘 UI 是一个不太一样的 UI 框架。 本 UI 框架是一个「面向源码阅读者」的框架。如果对你有帮助&#xff0c;请不要吝惜你的 star。 也就是说&#xff0c;我制作这个框架的目的就是让前端新人学习轮子的制作思路。所有代码都追求可读性。 你可…

onselectstart与onselect

这两个事件看起来很相似&#xff0c;事实上却非常的不同。 onselectstart onselectstart几乎可以用于所有对象&#xff0c;其触发时间为目标对象被开始选中时&#xff08;即选中动作刚开始&#xff0c;尚未实质性被选中&#xff09;。该事件常使用 于使目标对象“禁止变蓝”&am…

Vuejs 配合 mint-ui 开发移动端web

初衷 这是一个比较着急的事情&#xff08;两天时间&#xff0c;写一个带视频播放、图片浏览、图文混排列表、上拉刷新、滚动刷新等等的单页&#xff09;&#xff0c;一开始同事使用传统H5 JS CSS的方式&#xff0c;我担心进度&#xff0c;就硬着头皮上vuejs&#xff0c;为什么…

CSS相对定位绝对定位

参考文章&#xff1a;http://www.w3school.com.cn/css/css_positioning.aspCSS 定位和浮动 CSS 为定位和浮动提供了一些属性&#xff0c;利用这些属性&#xff0c;可以建立列式布局&#xff0c;将布局的一部分与另一部分重叠&#xff0c;还可以完成多年来通常需要使用多个表格才…

css:touch-action导致安卓无法滚动页面

前言 相信大家搜css touch-action很容易搜到一批文章&#xff0c;但感觉自己还是需要写下自己这这个过程中的一些探索经历。 之所以写&#xff0c;是因为单独去学知识点或者单独看一篇文章其实很简单的&#xff0c;难的是在自己实践中&#xff0c;因为一个问题找一个方案&…

什么时候该用vuex?

Vuex是什么 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化 官方是这么介绍的 为什么要判断什么时候使用Vuex 很简单的道理&#xff0c;你总不能什么时候都使…

详解div+css相对定位和绝对定位用法

前言 在用DIVCSS控制排版过程中&#xff0c;定位一直被人认为是一个难点&#xff0c;这主要是表现为很多网友在没有深入理解清楚定位的原理时&#xff0c;排出来的杂乱网页常让他们不知所措&#xff0c;而另一边一些高手则常常借助定位的强大功能做出些很酷的效果来&#xff0c…