功能需求: 自定义扩展,将原先的datebox控件按钮进行自定义的扩展:

1.问题:
对原先的时间按钮控件进行更改扩展,新增 “一刻钟” “半小时” “一小时” 选项。
获取原先的 datebox 对象的原型,进行扩展。 2.首先获取原先的datebox控件的原型
function initDataButton(){
var buttons = $.extend([], $.fn.datebox.defaults.buttons);
buttons.splice(0, 2, {
text: '一刻钟后',
handler: function(target){
var opts=$.data(target,"datetimebox").options;
var date=_addm(target,"M",15);
_b52(target,opts.formatter.call(target,date));
}
},{
text: '半小时后',
handler: function(target){
var opts=$.data(target,"datetimebox").options;
var date=_addm(target,"M",30);
_b52(target,opts.formatter.call(target,date));
}
},{
text: '一小时后',
handler: function(target){
var opts=$.data(target,"datetimebox").options;
var date=_addm(target,"H",1);
_b52(target,opts.formatter.call(target,date));
}
},{
text: '确定',
handler: function(target){
_b53(target);
}
});
$('#startTime').datebox({
buttons: buttons
});
$('#endTime').datebox({
buttons: buttons
});
} 3.jQuery源码中的js代码: function _addm(_b4f,f,n){
var c=$(_b4f).datetimebox("calendar");
var t=$(_b4f).datetimebox("spinner");
var date=c.calendar("options").current;
var h=t.timespinner("getHours");
if(f=="H"){
h+=n;
}
var m=t.timespinner("getMinutes");
var x=m%10;
if(x>0&&x<5){//1,2,3,4
m-=x;
}else if(x>5&&x<10){//6,7,8,9
m+=(10-x);
}
if(f=="M"){
m+=n;
}
var s=0;//t.timespinner("getSeconds");
return new Date(date.getFullYear(),date.getMonth(),date.getDate(),h,m,s);
}; function _b52(_b55,_b56,_b57){
var opts=$.data(_b55,"datetimebox").options;
$(_b55).combo("setValue",_b56);
if(!_b57){
if(_b56){
var date=opts.parser.call(_b55,_b56);
$(_b55).combo("setText",opts.formatter.call(_b55,date));
$(_b55).combo("setValue",opts.formatter.call(_b55,date));
}else{
$(_b55).combo("setText",_b56);
}
}
var date=opts.parser.call(_b55,_b56);
$(_b55).datetimebox("calendar").calendar("moveTo",date);
$(_b55).datetimebox("spinner").timespinner("setValue",_b58(date));
function _b58(date){
function _b59(_b5a){
return (_b5a<10?"0":"")+_b5a;
};
var tt=[_b59(date.getHours()),_b59(date.getMinutes())];
if(opts.showSeconds){
tt.push(_b59(date.getSeconds()));
}
return tt.join($(_b55).datetimebox("spinner").timespinner("options").separator);
};
}; function _b53(_b54){
var opts=$.data(_b54,"datetimebox").options;
var date=_b4e(_b54);
_b52(_b54,opts.formatter.call(_b54,date));
$(_b54).combo("hidePanel");
}; function _b4e(_b4f){
var c=$(_b4f).datetimebox("calendar");
var t=$(_b4f).datetimebox("spinner");
var date=c.calendar("options").current;
return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds"));
};

修改之前:

修改之后:

扩展 jQuery datebox控件按钮的更多相关文章

  1. .net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器

    1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.We ...

  2. 给EasyUI的DateBox控件添加清除button

     EasyUI中间DateBox控制甚至没有被清除button.例如下面的附图: 真是不可思议,对于要求日期格式必须选择的情况下,不能清空日期,很不方便.      尽管能够通过手工改动EasyU ...

  3. jquery 分页控件2

    jquery 分页控件(二) 上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的 ...

  4. jquery 分页控件1

    jquery 分页控件(一) 以前一直都是用别人的分页控件,虽然用得很爽,但总觉的还是自己写个小插件比较好,这个插件效果.代码等都有参照别人完成的控件.即便功能并不是那么完善,扩展性也不好,bug或许 ...

  5. jQuery树形控件zTree使用小结

    作者:Fonour 字体:[增加 减小] 类型:转载 时间:2016-08-02我要评论 这篇文章主要为大家详细介绍了jQuery树形控件zTree使用方法,zTree树插件的基本使用方法,感兴趣的小 ...

  6. jQuery操作控件

    在项目中添加前台控件radio,操作两个div的显示和隐藏,其实是一个很简单的问题,但是费了老大劲才完成,也就是jQuery操作控件的一些基础知识.方法有三种,简单介绍: 1.给元素设置style属性 ...

  7. 精确到秒的JQuery日期控件

    项目中需要用到精确到秒的日期控件,到网上搜了一下,发现有一个JQuery控件可以实现该功能---TimerPicker.但是官网上没有提供该控件的完整Demo,而且没有提供汉化包,所以自己汉化了一下, ...

  8. Jquery获得控件值的方法

    一 Jquery获得服务器控件值的方法 由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,google了下,总结有以下3种方法: 服务器控件代码:<a ...

  9. android 让一个控件按钮居于底部的几种方法

    android 让一个控件按钮居于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_ ...

随机推荐

  1. android intent 传数据

    1. 基本数据类型 Intent intent = new Intent(); intent.setClass(activity1.this, activity2.class); //描述起点和目标 ...

  2. Kettle提高输入输出数据总结

    1 mysql在数据连接是可以通过设置一下三个三处的方式 useServerPrepStmts=false       useCursorFetch=true      useCompression= ...

  3. Leetcode 之Longest Palindromic Substring(30)

    很经典的一道题,最长回文子串,有多种方法. 首先介绍的一种方法是从中间向两边展开.注意区分aba和abba型的回文串:如果当前最长的子串已经当于两边中最长的子串了,则无需再去判断. //从中间向两边展 ...

  4. Python中的PIL

    转自:http://blog.csdn.net/yockie/article/details/8498301 介绍 把Python的基础知识学习后,尝试一下如何安装.加载.使用非标准库,选择了图像处理 ...

  5. Linux磁盘的性能详细测试办法

    # 测试写入20Gb文件sync && time -p bash -c "(dd if=/dev/zero of=test.dd  bs=1000K count=20000; ...

  6. section

    @RenderSection("Header")   @section Header { <div class="view"> @foreach ( ...

  7. python request post上传文件额外注意点

    通用用法 但上图的字段名,类型需要根据不同接口填写,如某服务接口: 因而对应的上传代码如下: # 输出参数:请求响应报文import requestsrequest_url = 'https://XX ...

  8. PTA L1-020 帅到没朋友 团体程序设计天梯赛-练习集

    L1-020 帅到没朋友(20 分)   当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤),是已 ...

  9. 发现一个FreeSWITCH bug

    在研究FreeSWITCH视频会议的混屏问题时候发现一个bug. 已提交jira. 附上代码,问题很明显,不解释 =========================================== ...

  10. angularjs学习笔记2—运行phonecat项目

    如果你去angularjs中文网看它的教程,你会发现一开始它提供了一个phonecat的引导项目,这个项目是angular官方给出的一个类似于demo的教程项目,并配有相应文档,按照这个项目并配合文档 ...