原由

在做系统时根据要求有时候需要屏蔽掉某些特殊的日期,像周日或者法定假日,以及一些调班的日期;使用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. 关于ProgressDialog.show抛出android.view.WindowManager$BadTokenException: Unable to add window

    下午摆弄ProgressDialog,进入就抛错:android.view.WindowManager$BadTokenException: Unable to add window -- token ...

  2. Python String Formatting Best Practices

    https://imliyan.com/blogs/article/Python3.6%E6%96%B0%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A0%BC%E5 ...

  3. 机器人中的轨迹规划(Trajectory Planning )

    Figure. Several possible path shapes for a single joint 五次多项式曲线(quintic polynomial) $$\theta(t)=a_0+ ...

  4. Linux-task_struct和文件系统及管道的关系

    推荐:文件描述符和文件指针的关系 fs_struct 记录该进程所在文件系统等信息. files_struct 记录该进程当前打开的所有文件等信息,其中有一个元素为数组,数组索引是文件描述符,数组元素 ...

  5. 51单片机stack堆栈

    一般编译器的堆栈用于保存局部变量.函数的参数.函数的返回值.中断上下文信息等.但Keil对局部变量.函数参数预先分配空间(放在静态全局变量区),Keil的堆栈只是用于保存函数嵌套调用的PC.中断上下文 ...

  6. Sublime text 3 格式化代码 插件

    JsFormat: 重新打开sublime就能使用js格式化插件 使用方法: 1.快捷键:ctrl+alt+f 2.或者先用快捷键打开命令面板 “ctrl + shift + p”, 再输入 “For ...

  7. Java编程的逻辑 (92) - 函数式数据处理 (上)

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  8. hdoj:2069

    Coin Change Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  9. Halcon中模板匹配方法的总结归纳

    基于组件的模板匹配: 应用场合:组件匹配是形状匹配的扩展,但不支持大小缩放匹配,一般用于多个对象(工件)定位的场合. 算法步骤: 1.获取组件模型里的初始控件 gen_initial_componen ...

  10. Golang语言下使用Protocol Buffer教程

    代码仓库地址 一.介绍 Protobuf是Google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式.所以很适合用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的 ...