• my97DatePicker 自定义扩展方法(实现备忘录) hellohello


    昨天在经理安排下,提出一个需求,显示出日历,并在日历上显示特殊日期,当鼠标移动至此日期时,弹出div,显示当天具体的操作信息。在网上与园子里查找一段时间,并没有准确的demo,所以无奈只有自己研究,二次开发DatePicke。

    先来看下DatePicke提供的API这些我不想说了,不知道的直接上官网,或者百度、google查找。

    官网给出的API中要实现备忘录效果,我们要用到三个地方

    1.平面显示。

    2.特殊天和特殊日期。

    3.日历放大:这里说下控制calendar的大小的属性,目录:DatePicker->skin->default->datepicker.css->.WdateDiv,我们可以更改宽度,高度属于日历自适应的,如果强制改变的话,会早成页面扭曲变形的原因,所以设置基本宽度即可。

    有了上面三个准备后,接下来就是重要的一步,编写自定义扩展事件,这里我也只是举例,大家可以根据例子写出自己想要的结果。

    首先打开WdatePicker.js,calendar.js,这里介绍下这俩个核心库。

    WdatePicker:配置文件,定义接口的地方。

    calendar:主函数库,在WdatePicker中定义的方法在这里实现。

    进入主题:添加自定义函数

    首先我们要把两个js文件进行解压,方便查看推荐一个不错的网址:js优化工具

    在WdatePicker中定义新增方法的入口,specialDateMouseOver

    specialDateMouseOver:null,

    现在查看firefox中某一特殊日期html

    <td class="Wwday" align="center" onmouseout="this.className='Wwday'" onmouseover="this.className='WwdayOn'" onclick="day_Click(2013,4,14);">14</td>
    <td class="WspecialDay" align="center" onmouseout="this.className='WspecialDay'" onmouseover="this.className='WdayOn'" onclick="day_Click(2013,4,15);">15</td>

    这里可以看出在特殊日期与普通日期下,都是定义了统一的事件处理方法,当然这时候我们要对特殊日期的onmouseover事件进行重写,我们去源代码中查看定义此方法的位置,搜索关键字"WspecialDay",很快就能在js中找到此属性的位置

                    G.a("<td align=center ");
                    if (J) {
                        if (this.checkValid(K, "d", $)) {
                            if (this.testSpeDay(new Date(K.y, K.M - 1, K.d).getDay()) || this.testSpeDate(K)) {
                                H = "WspecialDay";
                            }
                            G.a('onclick="day_Click(' + K.y + "," + K.M + "," + K.d + ');" ');
                            G.a("onmouseover=\"this.className='" + E + "'\" ");
                            G.a("onmouseout=\"this.className='" + H + "'\" ");
                        } else {
                            H = "WinvalidDay";
                        }
                        G.a("class=" + H);
                        G.a(">" + K.d + "</td>");
                    } else {
                        G.a("></td>");
                    }

    我们可以清楚的看到,在定义每一列<td>的事件时,是在这里生成的,废话不多说,发现这一特点后我们来做个实验,在H="WspecialDay"下添加代码

     G.a("onmouseover=\"alert(1);\"");

     保存后回到主页,手动移到特殊日期后,就能够弹出1的提示框内容。

     功能很简单,重要的是一个思路,接下来我们要对这个方法进行封装,以接口的形式对外,使开发人员自定义特殊日期的鼠标移动事件,代码如下:

    WdatePicker.js 对外提供接口

     calendar.js 实现接口


    重新定义

    G.a("onmouseover=\"_mouseOvers(this)\"");

    这样我们就可以自定义特殊日期的鼠标移动事件了。实现方式和my97调用其他方法的形式一样。

     WdatePicker({ specialDates: ['2013-04-15', '2013-04-19'], eCont: 'div1', _SpecialOnmouseover: function (event) { alert('111'); } })

    本篇内容实质是比较简单的,有js基础的朋友相信都能看懂,重点并不是功能,而是实现的思路,我们在编程时要勇于发现与思索,彻底透析每一项,每一点,这样是代码最高的艺术,好了最后我把我做的一个扩展功能给大家看下

    以上都是鼠标移到特殊日期后显示当天的特殊内容,这里非常感谢群里的水墨轩大牛的指导,让小弟我又学习到了很多知识,另外小小的做个广告,欢迎加群261882616这里欢迎,高手新手,大牛,小菜们的加入

    大家共同学习共同进步,共同享受编程的快乐。

  • 相关阅读:
    css3
    如何去把数据渲染到页面
    js中的正则
    12.4
    react-router HashRouter和BrowserHistory的区别
    react 路由使用react-router-dom
    react 中的 三大重要属性state refs props
    在Vue中如何快速实现小球动画
    模块化 require.js 入门教学(前端必看系列)
    如何把设计稿中px值转化为想要的rem值
  • 原文地址:https://www.cnblogs.com/doNetTom/p/3022108.html
Copyright © 2020-2023  润新知