easyui源码翻译1.32--TimeSpinner(时间微调)
前言
扩展自$.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(时间微调)的更多相关文章
- easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)
前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...
- easyui源码翻译1.32--NumberSpinner(数字微调)
前言 扩展自$.fn.spinner.defaults和$.fn.numberbox.defaults.使用$.fn.numberspinner.defaults重写默认值对象.下载该插件翻译源码 数 ...
- easyui源码翻译1.32--datagrid(数据表格)
前言 此前网上有easyui1.25的源码 应该算是比较老的版本 之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34 1.33开始支持css3 算是又一个转折 但是 ...
- easyui源码翻译1.32--DateTimeBox(日期时间输入框)
前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 和日期输入框类似,日期时间输入框允许用户选择日期和指定 ...
- easyui源码翻译1.32--EasyLoader(简单加载)
前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3. ...
- easyui源码翻译1.32---ProgressBar(进度条)
前言 使用$.fn.progressbar.defaults重写默认值对象.下载该插件翻译源码 进度条提供了一个反馈显示一个长时间运行的操作进展.可以更新的进展条,让用户知道当前正在执行操作. 源码 ...
- easyui源码翻译1.32--Tabs(选项卡)
前言 使用$.fn.tabs.defaults重写默认值对象.下载该插件翻译源码 选项卡显示一批面板.但在同一个时间只会显示一个面板.每个选项卡面板都有头标题和一些小的按钮工具菜单,包括关闭按钮和其他 ...
- easyui源码翻译1.32--accordion(手风琴)
前言 前几天加班比较忙 未能及时更新翻译的 今天多发布几篇..下载该插件翻译源码 Accordion 分类空间允许用户使用多面板,但在同一时间只会显示一个.每个面板都内建支持展开和折叠功能.点击一个面 ...
- easyui源码翻译1.32--SplitButton(分割按钮)
前言 扩展自$.fn.linkbutton.defaults.用于$.fn.splitbutton.defaults重写默认值对象.下载该插件翻译源码 类似菜单按钮,分割按钮也与linkbutton和 ...
随机推荐
- ionic+cordova+angularJs监听刷新
普通的js返回并刷新这里就不多说了,百度就有很多方法. 下面说的是使用了angularjs.ionic开发的一个手机app中我使用的返回上一页并刷新的方法. 场景:回复的页面是单独的,点击保存回复后会 ...
- python内置函数大全
一.数学运算类 abs(x) 求绝对值1.参数可以是整型,也可以是复数2.若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取商 ...
- Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用.但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的 ...
- 【JAVA】在编译期可直接替换的final变量
一.满足以下三个条件,一个final变量就不再是一个变量,而是一个直接量. 使用final修饰符修饰. 在申明的时候就进行初始化 初始化的值在编译器就可以确定. 二.在什么情况下初始化的值在编译期是可 ...
- 安装oracle 12c遇到问题
安装前步骤:更改用户账户控制设置:从不通知 出现 "SEVERE: [FATAL] [INS-30014] 无法检查指定的位置是否位于 CFS 上" 解决办法:重新设置hosts ...
- iOS App Transport Security
网络请求提示:Application Transport Security has blocked a cleartext HTTP (http://) resource load since it ...
- ios 经典错误
1 - [person test]:unrecognized selector sent to instance. 给penson对象发送一个不能识别的消息:test 2 set/get方法死循环 ...
- SQL SERVER 级联删除
有三个表: Company Address Contact 在Address和Contact中建立外键,外键id为company的id, 那么就不能任意删除Company.但假如在外键约束中把级联删除 ...
- CentOS7 安装LAMP环境
1.使用yum安装 yum -y install httpd mysql mysql-server php php-mysql postgresql postgresql-server php-pos ...
- Kali-Linux之开启ssh服务
需求:通过putty软件ssh到Kali-Linux系统 问题:默认情况下,Kali系统的ssh服务并没有开启 操作方法: 1.编辑sshd_config文件 root@kali:~# vi /etc ...