<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>日历控件</title>
<style type="text/css">
#calendar{ width:142px; padding:5px; height:198px; background:#FCF; -webkit-user-select:none; position:absolute;}
#calendar div.week span,#calendar span.date{ width:14px; font-size:12px; height:20px; text-align:center; line-height:20px; border:1px solid #ccc; margin:2px; float:left;}
#calendar span.date{ background:#fff; cursor:pointer;}
#calendar div.week{ clear:both; overflow:hidden;}
#calendar div.week span{ font-weight:bold;}
#calendar h6{ margin:0; padding:0; font-size:14px; line-height:20px; text-align:center; position:relative; overflow:hidden; height:20px;}
#prev,#next{ width:45px; text-align:center; position:absolute; color:blue; cursor:pointer; }
#prev{ left:0;}
#next{ right:0;}
</style>
</head> <body>
<input type="text" value="请输入……" id="input1">
</body>
</html>
<script>
input1.onfocus=function(){
  createCalendar(this);
}
//input1.onfocus=new Function("this;calendar(this)");
function createCalendar(ele){
var obj=offset(ele);
var l=obj.left;
var t=obj.top;
var oCalendar=document.getElementById('calendar');
if(oCalendar)return;
oCalendar=document.createElement('div');
oCalendar.style.top=t+'px';
oCalendar.style.left=l+ele.offsetWidth+5+'px';
oCalendar.id="calendar";
var oTitle=document.createElement('h6');
oCalendar.appendChild(oTitle);
oTitle.className="title";
//创建上prev按钮
var oPrev=document.createElement('span');
oPrev.id="prev";
oPrev.innerHTML="prev";
oTitle.appendChild(oPrev);
oPrev.onclick=function(){activeCalendar(--month);}
//创建中间titleContent
var oTitleContent=document.createElement('span');
//oTitleContent.id="titleContent";
oTitle.appendChild(oTitleContent);
var d=new Date;
var year=d.getFullYear();
var month=d.getMonth();
var m=month;
//oTitleContent.innerHTML=year+"年"+(month+1)+"月"
//创建next按钮
var oNext=document.createElement('span');
oNext.id="next";
oNext.innerHTML="next";
oNext.onclick=function(){activeCalendar(++month);}
oTitle.appendChild(oNext);
//创建周的导航栏
var aWeek=["日","一","二","三","四","五","六"];
var oWeek=document.createElement('div');
oWeek.className="week";
oCalendar.appendChild(oWeek); for(var i=0;i<7;i++){
var oSpan=document.createElement('span');
oSpan.innerHTML=aWeek[i];
oWeek.appendChild(oSpan);
}
//创建日期的容器
var oDateContent=document.createElement('div');
oDateContent.id="dateContent";
oCalendar.appendChild(oDateContent);
document.body.appendChild(oCalendar);
activeCalendar(month);
function activeCalendar(month){
oDateContent.innerHTML="";
var d1=new Date(year,month,1);
var diff=1-d1.getDay();
month=d1.getMonth();
if(diff==1)diff=-6;
d1.setDate(diff); oTitleContent.innerHTML=d1.getFullYear()+"年"+(d1.getMonth()+2)+"月"
for(var i=0;i<42;i++){
var oSpan=document.createElement('span');
oSpan.className="date";
var currentDate=d1.getDate();
oSpan.innerHTML=currentDate;
oSpan.curDate=d1.getFullYear()+"-"+(d1.getMonth()+1)+"-"+currentDate;
if(d1.getMonth()!=month){
oSpan.style.backgroundColor="#ccc";
}
oSpan.onclick=function(){
ele.value=this.curDate;
document.body.removeChild(oCalendar);
oCalendar=null }
d1.setDate(++currentDate);
oDateContent.appendChild(oSpan);
}
}
} function offset(ele){
var l=ele.offsetLeft;
var t=ele.offsetTop;
var p=ele.offsetParent;
while(p){
if(window.navigator.userAgent.indexOf("MSIE 8")>-1){
l+=p.offsetLeft;
t+=p.offsetTop;
}else{
l+=p.offsetLeft+p.clientLeft;
t+=p.offsetTop+p.clientTop;
}
p=p.offsetParent;
}
return {left:l,top:t}
} </script>

原生js-日历插件的更多相关文章

  1. 原生js日历选择器,学习js面向对象开发日历插件

    在web开发过程中经常会碰到需要选择日期的功能,一般的操作都是在文本框点击,然后弹出日历选择框,直接选择日期就可以在文本框显示选择的日期.开发好之后给用户使用是很方便,但如果每一个日历选择器都要临时开 ...

  2. 使用 原生js 制作插件 (javaScript音乐播放器)

    1.引用页面 index.html <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  3. js日历插件 中文、英文日历

    日历插件 来源网站:http://www.cnblogs.com/yank/archive/2008/08/14/1267746.html 六款英文日历 http://www.bobd.cn/desi ...

  4. 原生Js弹窗插件|web弹出层组件|对话框

    wcPop.js 是一款基于原生javascript开发的前端 web版 弹窗组件,遵循原生 H5/css3/JS 的书写规范,简单实用.拿来即用(压缩后仅10KB).已经兼容各大主流浏览器.内含多种 ...

  5. My97DatePicker{js日历插件}

    VS自带了一个日历控件:Calendar,但是它有一个缺陷:即在选择,隐藏,显示的时候都会引起回传 Calendar控件的一些用法:    取值:Calendar1.SelectedDate.ToSh ...

  6. JS日历插件 - My97 DatePicker用法详解

    一.简介 1. 注意事项 (1)My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名: (2)各目录及文件的用途: WdatePicker.js 配 ...

  7. 原生JS日历 + JS格式化时间格式

    公司项目中用到,以前没做过,废了好几个小时 终于做好了 先来效果图(暂时没写样式 凑合着看吧) 点击左右按钮都能改变月份 下方表格中的数据也会跟着变化 贴上代码 : html部分: <div s ...

  8. 纯js日历插件

    成品的效果图 1.HTML文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  9. (三)原生JS实现 - 插件 - 弹出层

    创建遮罩层 _createCover: function() { var newMask = document.createElement("div"); newMask.id = ...

  10. 原生js封装插件

    https://www.jianshu.com/p/937c6003851a object-fit: cover:https://www.jianshu.com/p/a2ce70fa9584 flex ...

随机推荐

  1. 建筑材料系统 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发

    框架介绍: 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性 ...

  2. 史航第12次作业&总结

    作业1:找出最长的字符串 #include <stdio.h> #include <string.h> int main() { ],strings[][]; ; printf ...

  3. VisualRust + VisualGDB编辑调试Rust

    Rust到1.6了,到了一个相对成熟的阶段,可以试用做一些项目了.但是写的代码越多,就会发现一个好的IDE相当于效率的一半.这里分享我 在Visual Studio的使用Rust的经验. 首先需要下载 ...

  4. SQL语言

    SQL语言的分类:DDL DML DQL DCL SQL中的操作无非就是(增删改查) DDL:Data Query Language,数据查询语言! 主要是用来定义和维护数据库的各种操作对象,比如库. ...

  5. exception 'yii\base\ErrorException' with message 'Class 'MongoClient' not found'

    问题描述: 本来项目运行的好好的,搬了一次办公室(电脑主机一起搬的),第二天的时候就登录不了了. php版本和扩展没有改变,且没有修改任何配置,我尝试重启php5-fpm 服务,又重启nginx服务, ...

  6. 使用新浪云 Java 环境搭建一个简单的微信处理后台

    前一段时间,写了一篇在新浪云上搭建自己的网站的教程,通过简单构建了一个 maven 的项目,展示部署的整个流程,具体的操作可以参看这里. 新浪云服务器除了可以搭建自己的网站以外,也非常的适合作为微信公 ...

  7. mysql 计算日期差

    有两个途径可获得   1.利用TO_DAYS函数   select to_days(now()) - to_days('20140831')   2.利用DATEDIFF函数   select dat ...

  8. PL/SQL远程连接Oracle的方式,无需安装客户端

    第一次用PL/SQL Developer这个非官方的软件,遇到了种种困难,幸好通过万能的Google已经全部解决,记录下来备察. 前提是保证你的远程oracle服务器一切正常.   微软客户端设置 使 ...

  9. ArcEngine编辑保存错误:Unable to create logfile system tables

    通过ArcEngine对多个SDE中多个图层进行批量编辑处理,其中有部分图层在结束编辑的时候出现错误提示(部分图层可以,只有两个数据较多的图层保存失败). 错误信息:Unable to create ...

  10. selenium-打开IE浏览器遇到问题记录

    [使用selenium打开IE浏览器步骤]: 1.在IE浏览器上运行测试脚本,首先需要下载IEDriverServer.exe,放在IE浏览器的安装目录且同级目录下. 2.参考代码如下: import ...