原由

在做系统时根据要求有时候需要屏蔽掉某些特殊的日期,像周日或者法定假日,以及一些调班的日期;使用WdatePicker可以屏蔽掉周日和大多数法定假日,但像清明或者调班的日期则不好处理。

想法

1:日历里不限制,但当选择时将选定的日期进行验证(使用onpicking事件),不符合则取消

好处是实现简单,缺点是日历上面没有标示,需要点到了才知道是不是允许的



2:当绑定时进行初始化一次日历,当月变更时也处理一次日历,把不符合条件的日期特殊处理

好处是用户使用时一看就知道哪些可用,哪些不可用

难点:

WdatePicker第一次绑定后再改变参数是不会有更新的,另外哪些日期是需要处理的不可能在绑定日期是就全部确定下来,要在月改变时动态取得,这时也无法通过日历自带的参数来处理(改了参数也没有用)

解决:

既然日历加载了便可以通过DOM处理,那就直接处理生成后的日历吧

在加载后处理一次,以后每次改变月时也处理一次(本示例中将WdatePicker的参数$crossFrame设置为false以简化DOM结构)

示例中把所有3的倍数的日期改变了颜色,单击事件也改变了,效果如下:

代码比较简单:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WdatePicker test</title>
</head>
<body>
<input id="Text1" type="text" />
<input id="Text2" type="text" />
</body>
</html>
<script src="../Jquery-1.8.2.min.js"></script>
<script src="WdatePicker.js"></script>
<script type="text/javascript">
$(function () {
$('#Text1,#Text2').each(function (index, element) {
$(element).bind('click', bindDatepicker(this));
});
});
function bindDatepicker(obj) {
$(obj).bind("click", function () {
WdatePicker({
el: obj,
autoPickDate: true,
Mchanged: setCalendar
});
setCalendar();
});
}
//对日历设置
function setCalendar() {
var WdateIframe = $dp.dd.getElementsByTagName("iframe");
if (WdateIframe.length > 0) {
WdateIframe = WdateIframe[0];
} else {
return;
}
var reg = /day_Click\((\d{4}),(\d{1,2}),(\d{1,2})\);/;
var doc = WdateIframe.contentWindow.document;
var _tables = doc.getElementsByTagName("table"); //当日历表格加载后才执行事件处理
if (_tables.length == 0) {
setTimeout(setCalendar, 100);
return;
}
$(doc).find('.WdayTable td').each(function (index, element) {
var html = element.outerHTML;
var m = reg.exec(html);
if (m) {
//m[1],m[2],m[3]分别为年月日
var date = m[1] + '-' + m[2] + '-' + m[3];
//此段可以作出判断,比如是节假日时候处理
if (m[3] % 3 == 0) {
element.innerHTML = "<span style='color:#eeeeee; font-weight:bold;'>" + m[3] + "</span>";
element.onclick = function () {
alert( " 单击了日期:" + date);
return;
};
}
}
});
}
</script>

WdatePicker日历添加事件,在任意月改变时处理日期事件的更多相关文章

  1. input中的内容改变时触发的事件

    input中的内容改变时触发的事件 1. onchange事件与onpropertychange事件的区别: onchange事件在内容改变(两次内容有可能相等)且失去焦点时触发:onproperty ...

  2. 当input中的内容改变时触发的事件

    当input中的内容改变时触发的事件 1 $('#id').bind('input propertychange', function() { //处理内容 } 循环js事件 $(document). ...

  3. WPF当属性值改变时利用PropertyChanged事件来加载动画

    在我们的程序中,有时我们需要当绑定到UI界面上的属性值发生变化从而引起数据更新的时候能够加载一些动画,从而使数据更新的效果更佳绚丽,在我们的程序中尽量将动画作为一种资源放在xaml中,而不是在后台中通 ...

  4. 'input propertychange' 当输入框文字改变时触发的事件!

    $('.amount_input').bind('input propertychange', function() { console.log(2); $('.list label').remove ...

  5. vue中使用watch函数,当数据改变时自动引发事件

    本来我的需求是这样的,使用ElementUI的日期选择器,当日期选择器被更改时需要根据新日期来向服务器获取新数据,但是发现这个日期选择器没有change事件,后来终于发现vue有个watch函数就是用 ...

  6. javascript实现浏览器窗口大小被改变时触发事件的方法

    转载 当浏览器的窗口大小被改变时触发的事件window.onresize 为事件指定代码: 复制代码代码如下: window.onresize = function(){ } 例如: 浏览器可见区域信 ...

  7. js | javascript实现浏览器窗口大小被改变时触发事件的方法

    转载 当浏览器的窗口大小被改变时触发的事件window.onresize 为事件指定代码: 代码如下: window.onresize = function(){ } 例如: 浏览器可见区域信息: 代 ...

  8. c#winform关闭窗口时触发的事件

    用户关闭软件时,软件一般会给“是否确认关闭”的提示. 通常,我们把它写在FormClosing 事件中,如果确定关闭,就关闭:否则把FormClosingEventArgs 的 Cancel 属性设置 ...

  9. WdatePicker日历控件使用方法(转)

    转自:http://www.cnblogs.com/weixing/archive/2011/08/15/2139431.html WdatePicker日历控件使用方法   1. 跨无限级框架显示 ...

随机推荐

  1. JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构

    一.简介 JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构 二.依赖 <!-- https://mvnrepository.com/artifact/org.fus ...

  2. android编码学习

    虽然以下博客有点老,但很清晰,有不明白的基础知识,可以来这里找找. 2015年最新Android基础入门教程目录(完结版) 1. 环境配置 Android stodio gradle配置踩过的坑 An ...

  3. angular 2 - 002 - 基本概念和使用

    service的注入, 注入的是service的单一实例

  4. [WPF] VisualBrush 中的布局

    今天插一篇随笔.说一说上周五遇到的一个布局问题,问题大概是这样的:需要在一个快区域上添加一张透明的背景图片,由于区域较大.并且宽高都不是固定大小,图片较小 所以图片需要居中显示.除此之外还需要在图片的 ...

  5. 在IIS7上导出所有应用程序池的方法批量域名绑定(网站绑定)

    资料来源: http://www.2cto.com/os/201410/341882.html 一点经验:导出配置文件后,建议打开看看,如果有需要调整的需要做修改. 在IIS7+上导出所有应用程序池的 ...

  6. mac安装MySQL-Python报错

    报错内容主要是: EnvironmentError: mysql_config not found Command "python setup.py egg_info" faile ...

  7. .net core Dapper for MySql

    Dapper 语法比较简单,效率也比较快,速度接近IDataReader 甚至读取数据超过了DataTable,建议在实际项目可以结合EntityFramework Core 一起使用. 一.创建My ...

  8. java模式:建造者模式

    我发现很多源码很喜欢用这个模式,比如spring cloud,spring framework. 建造者模式(Builder)用以构建各种各样的对象,主要功能就是代替对象的构造函数,更加自由化. 举个 ...

  9. docker容器里设置中文时区

    本文讨论docker容器里中文时区的问题,总所周知docker hub上的镜像默认都是英文时区的,在国人使用过程当中需要将时区设置成中文,我原来光配置/etc/localtime了date显示的时间也 ...

  10. Java反射+简单工厂模式总结

    除了 new 之外的创建对象的方法 通过 new 创建对象,会使得程序面向实现编程,先举个例子,某个果园里现在有两种水果,一种是苹果,一种是香蕉,有客户想采摘园子里的水果,要求用get()方法表示即可 ...