前言

扩展自$.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. netbeans环境中使用maven搭建jsf、primefaces工程

    新建maven工程,选择web工程 增加jsf框架,加入primefaces 部署到服务器,在浏览器中打开页面,这是primefaces框架的页面. 此时工程web目录下有如下文件 web.xml文件 ...

  2. oracle学习(1)

    1.安装完oracle数据库后,远程第一次无法登陆,需要进入sys用户后,更改以此后才有效. 2.TNS去读取配置的时候,如果在环境变量中已经配置了 TNS_ADMIN 后,则直接从此目录下读取. 3 ...

  3. 使用c#生成Identicon图片

    Identicon是什么 我们在站点注册的时候通常系统会在我们没有提供自定义头像时为我们指定一个默认的头像,不过,样子千篇一律很是难看.聪明的程序员想了很多办法来解决这个问题,比如你能在这里看到很漂亮 ...

  4. UVA - 297 Quadtrees (四分树)

    题意:求两棵四分树合并之后黑色像素的个数. 分析:边建树边统计. #include<cstdio> #include<cstring> #include<cstdlib& ...

  5. linux下screen工具的简单使用

    有时候,希望即使退出终端了,下次登录linux的时候,还能回到程序的控制界面,这个时候,screen工具就很有用了例如,写了一个从控制台读取屏幕输入的程序input_test,如果从终端退出了,下次登 ...

  6. 建立IP6隧道

    某站点又开始全站Free了,是否还在为在家上不了IPv6站点而苦恼呢?本教程适用于路由后的windows设备,即ip地址为内网地址通过本教程设置,可实现windows设备获得ipv6地址,以访问IPv ...

  7. debian 学习记录-4 -关于linux -2

    来源:<Debian标准教程>王旭 著 Slackware.Debian.RedHat.SuSE 这4种发布版是当今大部分发布版的前去,虽然SuSE衍生自Slackware,但由于其技术变 ...

  8. 解决在管理wordpress时权限不足的问题

    我的wordpress网站的运行环境是自己手动搭建的lamp环境,在管理wordpress时经常遇到因没有足够的权限而无法执行某些操作.在linux上的权限不足的问题无外乎有两个原因,一个是wordp ...

  9. STM32F407移植contiki2.6后使用LWIP库实现tcp client

    最近在做智能家居,物联网项目,用到了C下的contiki移植 经过一阵调试,终于在 STM32F407移植contiki2.6后使用LWIP库实现tcp client. 一路艰辛谁人知道....唯有留 ...

  10. Windows phone 8 安装在 VMWare上错误的各种解决方案

    http://windowsasusual.blogspot.jp/2013/01/how-to-launch-windows-phone-8-emulator.html Hardware requi ...