前言

扩展自$.fn.spinner.defaults。使用$.fn.timespinner.defaults重写默认值对象。下载该插件翻译源码

时间微调组件的创建基于微调组件。它和数字微调类似,但是显示的时间值。时间微调组件允许用户点击组件右侧的小按钮来增加或减少时间

源码

/**
* jQuery EasyUI 1.3.2
* qq:1364386878
*日期微调
*
*/
(function ($) {
//初始化timeSpinner
function init(jq) {
var options = $.data(jq, "timespinner").options;
$(jq).addClass("timespinner-f");
$(jq).spinner(options);
$(jq).unbind(".timespinner");
$(jq).bind("click.timespinner", function () {
var start = 0;
if (this.selectionStart != null) {
start = this.selectionStart;
} else {
if (this.createTextRange) {
var range = jq.createTextRange();
var s = document.selection.createRange();
s.setEndPoint("StartToStart", range);
start = s.text.length;
}
}
if (start >= 0 && start <= 2) {
options.highlight = 0;
} else {
if (start >= 3 && start <= 5) {
options.highlight = 1;
} else {
if (start >= 6 && start <= 8) {
options.highlight = 2;
}
}
}
highlight(jq);//初始选中的字段
}).bind("blur.timespinner", function () {
_setValue(jq);//设置时间微调组件的值
});
};
//初始选中的字段
function highlight(jq) {
var options = $.data(jq, "timespinner").options;
var start = 0, end = 0;
if (options.highlight == 0) {
start = 0;
end = 2;
} else {
if (options.highlight == 1) {
start = 3;
end = 5;
} else {
if (options.highlight == 2) {
start = 6;
end = 8;
}
}
}
if (jq.selectionStart != null) {
jq.setSelectionRange(start, end);
} else {
if (jq.createTextRange) {
var range = jq.createTextRange();
range.collapse();
range.moveEnd("character", end);
range.moveStart("character", start);
range.select();
}
}
$(jq).focus();
};
//解析时间
function parseTime(jq, value) {
var options = $.data(jq, "timespinner").options;
if (!value) {
return null;
}
var separators = value.split(options.separator);
for (var i = 0; i < separators.length; i++) {
if (isNaN(separators[i])) {
return null;
}
}
while (separators.length < 3) {
separators.push(0);
}
return new Date(1900, 0, 0, separators[0], separators[1], separators[2]);
};
// 设定timespinner的值
function _setValue(jq) {
var options = $.data(jq, "timespinner").options;
var val = $(jq).val();
var time = parseTime(jq, val);
if (!time) {
time = parseTime(jq, options.value);
}
if (!time) {
options.value = "";
$(jq).val("");
return;
}
var minTime = parseTime(jq, options.min);
var maxTime = parseTime(jq, options.max);
if (minTime && minTime > time) {
time = minTime;
}
if (maxTime && maxTime < time) {
time = maxTime;
}
var tt = [minTime(time.getHours()), minTime(time.getMinutes())];
if (options.showSeconds) {
tt.push(minTime(time.getSeconds()));
}
var val = tt.join(options.separator);
options.value = val;
$(jq).val(val);
function minTime(value) {
return (value < 10 ? "0" : "") + value;
};
};
//用户点击spinner按钮触发一个方法
function clickSpinner(jq, down) {
var options = $.data(jq, "timespinner").options;
var val = $(jq).val();
if (val == "") {
val = [0, 0, 0].join(options.separator);
}
var separators = val.split(options.separator);
for (var i = 0; i < separators.length; i++) {
separators[i] = parseInt(separators[i], 10);
}
if (down == true) {
separators[options.highlight] -= options.increment;
} else {
separators[options.highlight] += options.increment;
}
$(jq).val(separators.join(options.separator));
_setValue(jq);
highlight(jq);
};
//实例化函数
$.fn.timespinner = function (options, param) {
if (typeof options == "string") {
var method = $.fn.timespinner.methods[options];
if (method) {
return method(this, param);
} else {
return this.spinner(options, param);
}
}
options = options || {};
return this.each(function () {
var timespinner = $.data(this, "timespinner");
if (timespinner) {
$.extend(timespinner.options, options);
} else {
$.data(this, "timespinner", {
options: $.extend({}, $.fn.timespinner.defaults,
$.fn.timespinner.parseOptions(this), options)
});
init(this);
}
});
};
//默认方法
$.fn.timespinner.methods = {
//返回属性对象
options: function (jq) {
var options = $.data(jq[0], "timespinner").options;
return $.extend(options, {
value: jq.val(),
originalValue: jq.spinner("options").originalValue
});
},
//设置时间微调组件的值
setValue: function (jq, value) {
return jq.each(function () {
$(this).val(value);
_setValue(this);
});
},
//设置时间微调组件的值
getHours: function (jq) {
var options = $.data(jq[0], "timespinner").options;
var separators = jq.val().split(options.separator);
return parseInt(separators[0], 10);
},
//获取当前的分钟数
getMinutes: function (jq) {
var options = $.data(jq[0], "timespinner").options;
var separators = jq.val().split(options.separator);
return parseInt(separators[1], 10);
},
//获取当前的秒数
getSeconds: function (jq) {
var options = $.data(jq[0], "timespinner").options;
var separators = jq.val().split(options.separator);
return parseInt(separators[2], 10) || 0;
}
};
//解析器参数
$.fn.timespinner.parseOptions = function (target) {
return $.extend({}, $.fn.spinner.parseOptions(target),
$.parser.parseOptions(target,
["separator", { showSeconds: "boolean", highlight: "number" }]));
};
//默认属性和事件 并继承spinner
$.fn.timespinner.defaults = $.extend({},
$.fn.spinner.defaults, {
separator: ":",//定义在小时、分钟和秒之间的分隔符
showSeconds: false,//定义是否显示秒钟信息
highlight: 0,//初始选中的字段 0=小时,1=分钟.
//在用户点击微调按钮的时候调用的函数。'down'参数对应用户点击的向下按钮
spin: function (down) {
clickSpinner(this, down);
}
});
})(jQuery);

示例代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic TimeSpinner - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>
<script src="../../plugins2/jquery.parser.js"></script>
<script src="../../plugins2/jquery.validatebox.js"></script>
<script src="../../plugins2/jquery.spinner.js"></script>
<script src="../../plugins2/jquery.timespinner.js"></script>
</head>
<body>
<h2>Basic TimeSpinner</h2>
<div class="demo-info">
<div class="demo-tip icon-tip"></div>
<div>Click spin button to adjust time.</div>
</div>
<div style="margin:10px 0;"></div>
<input class="easyui-timespinner" style="width:80px;">
</body>
</html>

插件效果

easyui源码翻译1.32--TimeSpinner(时间微调)的更多相关文章

  1. easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)

    前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...

  2. easyui源码翻译1.32--NumberSpinner(数字微调)

    前言 扩展自$.fn.spinner.defaults和$.fn.numberbox.defaults.使用$.fn.numberspinner.defaults重写默认值对象.下载该插件翻译源码 数 ...

  3. easyui源码翻译1.32--datagrid(数据表格)

    前言 此前网上有easyui1.25的源码  应该算是比较老的版本  之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34  1.33开始支持css3 算是又一个转折  但是 ...

  4. easyui源码翻译1.32--DateTimeBox(日期时间输入框)

    前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 和日期输入框类似,日期时间输入框允许用户选择日期和指定 ...

  5. easyui源码翻译1.32--EasyLoader(简单加载)

    前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3. ...

  6. easyui源码翻译1.32---ProgressBar(进度条)

    前言 使用$.fn.progressbar.defaults重写默认值对象.下载该插件翻译源码 进度条提供了一个反馈显示一个长时间运行的操作进展.可以更新的进展条,让用户知道当前正在执行操作. 源码 ...

  7. easyui源码翻译1.32--Tabs(选项卡)

    前言 使用$.fn.tabs.defaults重写默认值对象.下载该插件翻译源码 选项卡显示一批面板.但在同一个时间只会显示一个面板.每个选项卡面板都有头标题和一些小的按钮工具菜单,包括关闭按钮和其他 ...

  8. easyui源码翻译1.32--accordion(手风琴)

    前言 前几天加班比较忙 未能及时更新翻译的 今天多发布几篇..下载该插件翻译源码 Accordion 分类空间允许用户使用多面板,但在同一时间只会显示一个.每个面板都内建支持展开和折叠功能.点击一个面 ...

  9. easyui源码翻译1.32--SplitButton(分割按钮)

    前言 扩展自$.fn.linkbutton.defaults.用于$.fn.splitbutton.defaults重写默认值对象.下载该插件翻译源码 类似菜单按钮,分割按钮也与linkbutton和 ...

随机推荐

  1. 几种RAID技术比较

    http://book.51cto.com/art/201310/412862.htm RAID(廉价磁盘冗余阵列)技术主要是为了改善磁盘的访问延迟,增强磁盘的可用性和容错能力.目前服务器级别的计算机 ...

  2. Android 使用BaseAdapter 插入不同类型数据

    在使用过程有时要在listview中插入不同类型的数据,比如说position=0的位置插入,广告,其它列表显示数据的情况. 一定要重写两种方法 @Override public int getIte ...

  3. 【转】Open Live Writer 插件更新

    一.更新内容 cnblog 页签中增加 Lua 和 Matlab 语法高亮:(SyntaxHighlight 页签中尚未添加) 增加折叠区域插件,见效果展示: 增加 bat 执行文件,直接拷贝插件所需 ...

  4. apache http server 多线程模式

    一般apache采用prefork和worker机制,通过apachectl -l命令查看默认使用的prefork机制.需要修改prefork策略 那么需要做如下修改: 1,/usr/local/ap ...

  5. Linux的僵尸进程产生原因及解决方法

    Linux的僵尸进程产生原因及解决方法: 1. 产生原因: 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.通过ps命令查看 ...

  6. table表格中加入<a>标签,使内容上下居中的方法。

    主要思路:定义好表格单元格的width和height,再加入<a>后,设置<a>的width=100%,height=100%填充整个单元格.那么此时设置上下左右居中样式就只需 ...

  7. jQuery 源码分析5: jQuery 基本静态方法(一)

    jQuery在初始化过程中会为自己扩展一些基本的静态方法和属性,以下是jQuery 1.11.3版本 239 ~ 564行间所扩展的静态属性和方法   jQuery.extend({ // 为每个jQ ...

  8. MySql事务及JDBC对事务的使用

    一 .事务的几个重要特性 1. 原子性 事务内的每个内容不可分割,是一个统一的整体.或同时进行或同时消亡. 2.一致性 事务执行前和事务执行后,状态都是统一的.如A转B 100元,A和B数据总额度没有 ...

  9. C. Sonya and Queries

    http://codeforces.com/contest/714/problem/C 看到这题目,想想,肯定不能暴力啊,如果用map,如何快速找到满足要求的数目,然后,长度18,我想,这不是熟悉的t ...

  10. mysql---整体备份和增量备份

    整体备份: 对整张表或者整个数据库甚至所有数据库进行备份. 增量备份: 对某一范围内的数据进行备份. 1.整体备份: 对表进行备份: 针对存储引擎为myisam的表,可以直接复制frm.myd.myi ...