又一日历输入效果没考虑兼容性,IE通过

onload = function()
{
var panel = new SelectPanel;
var rili = new Kalendar;
panel.Create();
rili.Create(panel);
panel.Apply(document.form1.a);
panel.Apply(document.form1.b);
}

/* 日历选择类
this.Width = 0; // 设置日历宽度,为零时不指定宽度。
this.Height = 0; // 设置日历高度,为零时不指定高度。
this.BorderColor = "#1095c6"; // 设置日历边框颜色。
this.BackColor = "white"; // 设置日历背景颜色。
this.CapBack = "#d9ebfe"; // 设置日历深色。
this.Tag = doc.createElement("table"); // 日历DOM节点。
this.Create = function(container) // 将日历绑定到指定对象。
*/
function Kalendar(win)
{
if(!win) win = self;
var doc = win.document;
var _Kalendar = this;
this.Width = 0;
this.Height = 0;
this.BorderColor = "#1095c6";
this.BackColor = "white";
this.CapBack = "#d9ebfe";
this.Tag = doc.createElement("table");
this.Tag.style.cursor = "default";
this.Create = function(container)
{
if(!container) container = doc.body;
this.Parent = container;
this.Tag.style.borderCollapse = "collapse";
this.Tag.border = 1;
this.Tag.borderColor = this.BorderColor;
this.Tag.width = this.Width ? this.Width : "";
this.Tag.height = this.Height ? this.Height : "";
this.Tag.rows[0].cells[0].bgColor = this.CapBack;
(container.Tag || container).appendChild(this.Tag);
BuildDateFace(new Date(sltNian.value, sltYue.value));
}
var today = new Date;
var tr = this.Tag.insertRow(); tr.insertCell();
var sltNian = doc.createElement("select");
sltNian.options.add(new Option(today.getFullYear() + "年", today.getFullYear()));
InitYearSelect();
function InitYearSelect()
{
while(sltNian.selectedIndex

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

做得比较急,所以没考虑兼容性。
通过两个类实现,一个是面板类,一个是日历类。
由于我开发时所有公共js都是在顶级窗口一次加载的,所以在子窗口创建对象时需要把当前窗口对象传进去,例如: var panel = new parent.parent.SelectPanel(self);如果没传self参数,默认就是加载js的窗口。

marcian 在网上找的那个公历算法有点复杂,呵呵。我获取当前月最大天数,以及当前月第一天是星期几是直接通过JS自带的Date函数来实现的。


代码如下:

// 获取当月最大天数
//asfman提供更简单的方式:return (new Date(y, m+1, 0)).getDate()
function GetDates(year, month)
{
    var date = new Date(year, month, 31);
    return 31 - date.getDate() || 31;
}
// 获取当月第一天是星期几
function GetFirstDay(year, month)
{
    return (new Date(year, month, 1)).getDay();
}

/* 下面这部分可以不要,因为即使出现new Date(2007, -1, 31),这种现象,Date会自动转换成Date(2006, 12, 31)
    if(month < 0)
    {
        month = 11;
        year--;
    }
    if(month == 12)
    {
        month = 0;
        year++;
    }*/

(0)

相关推荐

  • 又一日历输入效果没考虑兼容性,IE通过

    onload = function() { var panel = new SelectPanel; var rili = new Kalendar; panel.Create(); rili.Create(panel); panel.Apply(document.form1.a); panel.Apply(document.form1.b); } /* 日历选择类 this.Width = 0; // 设置日历宽度,为零时不指定宽度. this.Height = 0; // 设置日历高度,为零

  • JS实现身份证输入框的输入效果

    实现如图所示的输入效果: 实现这种效果,比较简单的一种方式就是给一个input添加一个背景图片,然后通过设置字间距来达到效果. 代码: html: <input type="text" maxlength="8" class="idInput" onkeyup='this.value=this.value.replace(/\D/gi,"")'> css: .idInput{ width: 24.95rem; he

  • JavaScript与jQuery实现的闪烁输入效果

    本文实例讲述了JavaScript与jQuery实现的闪烁输入效果.分享给大家供大家参考,具体如下: html部分 <div id="code"> <p>/**</p> <p>*2014-2-12</p> <p>*代码自动闪烁输入</p> <p>*/</p> 2014-2-14,I want to say:<br /> Baby, I love you forever

  • Android仿支付宝密码输入效果封装

    模仿支付宝输入效果,实现很简单,就是画个矩形框和圆形,其他的通过组合view来实现所有功能,虽然简单但是封装起来,方便以后使用,也分享一下,希望对别人也有点帮助. 1.如何使用,可以设置自己的进入退出动画,不设置则没有动画效果,自己觉得封装之后还是非常用好的. private MyInputPwdUtil myInputPwdUtil; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(sa

  • vue实现周日历切换效果

    本文实例为大家分享了vue实现周日历切换效果的具体代码,供大家参考,具体内容如下 废话不多说,直接上干货,需要的朋友自取 代码: <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge"

  • angular仿支付宝密码框输入效果

    项目需求,使用ng写一个密码框格子支付模块,一开始使用一个input+letter-spacing来分割字符,但是发现间距非常不好控制,随着字符的输入文本框字符串间距还会自动调整.最终从网上查找到一款jq仿支付宝密码输入框,于是我模仿编写了个指令模块. 效果如下: 完整代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <met

  • Android中多个EditText输入效果的解决方式

    前言 在开发中,我们常常遇到这种情况 我们往往需要的是下面这种效果 但是如果把这些实现的代码写在Activity中会比较麻烦,影响代码美观 解决方法 于是就有了下面这个辅助类,禁用了按钮的点击事件和按钮的渐变色,可同时添加一个或者多个EditText /** * 文本输入辅助类,通过管理多个TextView或者EditText输入是否为空来启用或者禁用按钮的点击事件 */ public final class TextInputHelper implements TextWatcher { pr

  • 替代window.event.srcElement效果的可兼容性的函数

    复制代码 代码如下: function getEvent() { var i = 0; if(document.all){ return window.event; } func = getEvent.caller; while(func != null) { var arg0 = func.arguments[0]; if(arg0) { if(arg0.constructor == MouseEvent) { return arg0; } } func = func.caller; } re

  • js文本中搜索关键词输入效果

    搜索类型 文章 图片 商品 点评 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • Java实现动态日历效果

    本文实例为大家分享了Java实现动态日历效果的具体代码,供大家参考,具体内容如下 题目:动态日历 输入年份,月份,显示当前月份日历布局 分析 实现日历的基本思想为:确定一个基准日期,计算从基准日期到指定年份月份的前一个月的总天数,计算这个总天数的前提为判断指定年份是否是闰年(闰年是可以被400整除或者可以被4整除但不被100整除的年份),利用总天数除以7的余数可以确定当前月份前面的空格数,要想简单的使此余数为空格数,则基准日期必须为1月1日并且是星期一,大部分日历的基准日期为1900年1月1日,

随机推荐