前言

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

日期输入框结合了一个可编辑的文本框控件和允许用户选择日期的下拉日历面板控件。选择的日期会自动转变为一个有效的日期然后填充到文本框中。选定的日期也可以被格式化为预定格式。

依赖关系

  • combo
  • calendar

源码

/**
* jQuery EasyUI 1.3.2
*
*翻译:qq 1364386878
*/
(function ($) {
//初始化
function init(jq) {
var datebox = $.data(jq, "datebox");
var options = datebox.options;
$(jq).addClass("datebox-f");
$(jq).combo($.extend({}, options, {
onShowPanel: function () {
datebox.calendar.calendar("resize");
options.onShowPanel.call(jq);
}
}));
$(jq).combo("textbox").parent().addClass("datebox");
if (!datebox.calendar) {
create();
}
function create() {
var panel = $(jq).combo("panel");
datebox.calendar = $("<div></div>").appendTo(panel).wrap("<div class=\"datebox-calendar-inner\"></div>");
datebox.calendar.calendar({
fit: true,
border: false,
onSelect: function (date) {
var formatterdate = options.formatter(date);
_setValue(jq, formatterdate);
$(jq).combo("hidePanel");
options.onSelect.call(jq, date);
}
});
_setValue(jq, options.value);
var button = $("<div class=\"datebox-button\"></div>").appendTo(panel);
$("<a href=\"javascript:void(0)\" class=\"datebox-current\"></a>").html(options.currentText).appendTo(button);
$("<a href=\"javascript:void(0)\" class=\"datebox-close\"></a>").html(options.closeText).appendTo(button);
button.find(".datebox-current,.datebox-close").hover(function () {
$(this).addClass("datebox-button-hover");
}, function () {
$(this).removeClass("datebox-button-hover");
});
button.find(".datebox-current").click(function () {
datebox.calendar.calendar({
year: new Date().getFullYear(),
month: new Date().getMonth() + 1,
current: new Date()
});
});
button.find(".datebox-close").click(function () {
$(jq).combo("hidePanel");
});
};
};
//查询
function _query(jq, value) {
_setValue(jq, value);
};
//回车
function _enter(jq) {
var options = $.data(jq, "datebox").options;
var calendar = $.data(jq, "datebox").calendar;
var formatter = options.formatter(calendar.calendar("options").current);
_setValue(jq, formatter);
$(jq).combo("hidePanel");
};
//
function _setValue(jq, value) {
var datebox = $.data(jq, "datebox");
var options = datebox.options;
$(jq).combo("setValue", value).combo("setText", value);
datebox.calendar.calendar("moveTo", options.parser(value));
};
//实例化日期输入框
$.fn.datebox = function (target, parm) {
if (typeof target == "string") {
var method = $.fn.datebox.methods[target];
if (method) {
return method(this, parm);
} else {
return this.combo(target, parm);
}
}
target = target || {};
return this.each(function () {
var datebox = $.data(this, "datebox");
if (datebox) {
$.extend(datebox.options, target);
} else {
$.data(this, "datebox", {
options: $.extend({},
$.fn.datebox.defaults,
$.fn.datebox.parseOptions(this),
target)
});
}
init(this);
});
};
//默认方法
$.fn.datebox.methods = {
//返回属性对象
options: function (jq) {
var options = $.data(jq[0], "datebox").options;
options.originalValue = jq.combo("options").originalValue;
return options;
},
//获取日历对象
calendar: function (jq) {
return $.data(jq[0], "datebox").calendar;
},
//设置日期输入框的值
setValue: function (jq, value) {
return jq.each(function () {
_setValue(this, value);
});
},
//重置
reset: function (jq) {
return jq.each(function () {
var options = $(this).datebox("options");
$(this).datebox("setValue", options.originalValue);
});
}
};
//解析器
$.fn.datebox.parseOptions = function (target) {
var t = $(target);
return $.extend({}, $.fn.combo.parseOptions(target), {});
};
//日期输入框默认属性和事件 继承了comb
$.fn.datebox.defaults = $.extend({}, $.fn.combo.defaults, {
panelWidth: 180,//下拉日历面板宽度
panelHeight: "auto",//下拉日历面板高度
//键盘事件
keyHandler: {
up: function () {
},
down: function () {
},
enter: function () {
_enter(this);
},
query: function (value) {
_query(this, value);
}
},
//显示当天按钮
currentText: "Today",
//显示关闭按钮
closeText: "Close",
//显示关闭按钮
okText: "Ok",
//该函数用于格式化日期,它有一个'date'参数并且会返回一个字符串类型的值
formatter: function (date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
return m + "/" + d + "/" + y;
},
//该函数用于解析一个日期字符串,它有一个'date'字符串参数并且会返回一个日期类型的值
parser: function (s) {
var t = Date.parse(s);
if (!isNaN(t)) {
return new Date(t);
} else {
return new Date();
}
},
//在用户选择了一个日期的时候触发
onSelect: function (_1e) {
}
});
})(jQuery);

示例代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic DateBox - 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.panel.js"></script>
<script src="../../plugins2/jquery.combo.js"></script>
<script src="../../plugins2/jquery.calendar.js"></script>
<script src="../../plugins2/jquery.datebox.js"></script>
</head>
<body>
<h2>Basic DateBox</h2>
<div class="demo-info">
<div class="demo-tip icon-tip"></div>
<div>Click the calendar image on the right side.</div>
</div>
<div style="margin:10px 0;"></div>
<input class="easyui-datebox"></input>
</body>
</html>

插件效果

easyui源码翻译1.32--DateBox(日期输入框)的更多相关文章

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

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

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

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

  3. easyui源码翻译1.32--NumberBox(数值输入框)

    前言 扩展自$.fn.validatebox.defaults.使用$.fn.numberbox.defaults重写默认值对象.下载该插件翻译源码 数值输入框是用来限制用户只能输入数值型数据的.他可 ...

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

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

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

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

  6. easyui源码翻译1.32--Form(表单)

    前言 使用$.fn.form.defaults重写默认值对象下载该插件翻译源码 form提供了各种方法来操作执行表单字段,比如:ajax提交, load, clear等等.当提交表单的时候可以调用va ...

  7. easyui源码翻译1.32--Calendar(日历)

    前言 前几天加班比较忙 未能及时更新翻译的 今天多发布几篇..下载该插件翻译源码 日历控件显示一个月的日历,允许用户选择日期和移动到下一个或上一个月.默认情况下,一周的第一天是周日.它可以通过设置'f ...

  8. easyui源码翻译1.32--TimeSpinner(时间微调)

    前言 扩展自$.fn.spinner.defaults.使用$.fn.timespinner.defaults重写默认值对象.下载该插件翻译源码 时间微调组件的创建基于微调组件.它和数字微调类似,但是 ...

  9. easyui源码翻译1.32--Draggable(拖动)

    前言 使用$.fn.draggable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 --拖动 ...

随机推荐

  1. EasyUIDataGrid 的List<T>转Json

    EasyUI的DataGrid的Json自己拼接的话非常麻烦,而且容易出错,于是写了个通用的方法! CustomList<T>自定义类,继承于List<T>,用来处理返回的实体 ...

  2. Spring AOP (Spring 3.x 企业应用开发实战读书笔记第六章)

    从面相对象编程到面相切面编程,是一种代码组织方式的进化. 每一代的代码组织方式,其实是为了解决当时面对的问题.比如写编译器和写操作系统的时候的年代当然要pop,比如写界面的时候当然要oop,因为界面这 ...

  3. SQL访问EXCEL错误集合

    --行集函数 --1, OPENDATASOURCE 环境:WIN7,SQL 2014,OFFICE 2013 SELECT * FROM OPENDATASOURCE('Microsoft.ACE. ...

  4. C语言对文件的相关命令

    fopen(文件名,使用文件的方式):打开数据文件 fclose(FILE *fp):关闭数据文件 feof(FILE *fp):是判断是否到fp的结尾 fputc(char ch,FILE *fp) ...

  5. PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法

    今天在操作php上传的时候发现了一个问题,就是当php脚步上传的文件大小超过php.ini中post_max_size的限制的时候页面不会给出提醒,文件也上传失败,这个问题感觉应该算是一个另类,今天跟 ...

  6. python函数的返回值 讲解

    我们一起来聊聊python函数返回值的特殊情况,之前我也碰到过类似方面的问题,到后来查阅了一些资料后,发现原来是这样. 首先,写函数的时候,一定要写函数的文档,这样方便我们识别函数是做什么的.我记得很 ...

  7. Lucas定理的理解与应用

    Lucas定理:用于计算组合数模除素数后的值,其实就是把(n,m)分别表示为p进制,累乘各位的可能取的个数,得到最终的结果: 推论:(n & m) == m则C(n,m)为奇数:即C(n,m) ...

  8. 【已解决】Vmware无法创建虚拟网卡的问题

    最近因为各种需要,要在虚拟机里使用桥接方式连接.但是不管怎么操作,都无法添加虚拟网卡.连续好多天需要用到桥接上网,今儿多方搜索,找到了解决方案. 参考资料:http://tieba.baidu.com ...

  9. windows azure programing

    http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started-vs2012/ http:// ...

  10. AES加密算法原理

    随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1].经过三轮的筛选 ...