DatetimeField

以前用Zapatec Calendar。试用了下extjs的时间控件, DateField中没有time信息。看了下Datepicker, 估计想改出来也不是一会的事。还是改改 Zapatec Calendar,接着用吧。用一个TriggerField做为时间控件,修改了下Calendar-setup.js。去掉了暂时不用的东西,修改事件触发的相关部分。


calendar_setup = function(params) {
params['ifFormat'] = '%m/%d/%Y %H:%M:%S';
params['singleClick'] = true;
params['showsTime'] = true;
params['sortOrder'] = "asc";
params['timeFormat'] = "24";
params['align'] = "Br";
params['range'] = [1900, 2999];
params['weekNumbers'] = true;
params['sortOrder'] = "asc";
params['timeFormat'] = "24";
params['electric'] = true;
params['step'] = 2;
params['cache'] = false;
params['showOthers'] = false;
params['fdowClick'] = false;
params['disableFdowChange'] = false;
params['numberMonths'] = 1;
params['controlMonth'] = 1;
params['vertical'] = false;
params['monthsInRow'] = params.numberMonths;

function onSelect(cal) {
var p = cal.params;
var inputField = params.inputField.el.dom;
var update = (cal.dateClicked || p.electric);
if (update && p.flat) {
if (typeof p.flatCallback == "function")
{
if (!p.multiple) //User can call function submitFlatDates directly in Calendar object to handle the submission of multiple dates.
p.flatCallback(cal);
} else
alert("No flatCallback given -- doing nothing.");
return false;
}
if (update && inputField) {
inputField.value = cal.currentDate.print(p.ifFormat);
if (typeof inputField.onchange == "function")
inputField.onchange();
}
if (update && p.singleClick && cal.dateClicked)
cal.callCloseHandler();
if (update && typeof p.onUpdate == "function")
p.onUpdate(cal);
};

if (params.flat != null) {
if (typeof params.flat == "string")
params.flat = document.getElementById(params.flat);
if (!params.flat) {
alert("Calendar.setup:\n Flat specified but can't find parent.");
return false;
}
var cal = new Zapatec.Calendar(params.firstDay, params.date, params.onSelect || onSelect);
cal.disableFdowClick = params.disableFdowChange;
cal.showsOtherMonths = params.showOthers;
cal.showsTime = params.showsTime;
cal.time24 = (params.timeFormat == "24");
cal.timeInterval = params.timeInterval;
cal.params = params;
cal.weekNumbers = params.weekNumbers;
cal.sortOrder = params.sortOrder.toLowerCase();
cal.setRange(params.range[0], params.range[1]);
cal.setDateStatusHandler(params.dateStatusFunc);
cal.getDateText = params.dateText;
cal.numberMonths = params.numberMonths;
cal.controlMonth = params.controlMonth;
cal.vertical = params.vertical;
cal.yearStep = params.step;
cal.monthsInRow = params.monthsInRow;
cal.helpButton = !params.noHelp;
if (params.ifFormat) {
cal.setDateFormat(params.ifFormat);
}

var inputField = params.inputField.el.dom;
if (inputField && inputField.type == "text" && typeof inputField.value == "string") {
cal.parseDate(inputField.value);
}

if (params.multiple) {
cal.setMultipleDates(params.multiple);
}
cal.create(params.flat);
cal.show();
return cal;
}

var triggerEl = params.inputField;
triggerEl.onTriggerClick = function() {
var dateEl = params.inputField.el.dom;
//FIX for Enter key!
if (triggerEl.blur) {triggerEl.blur();}
var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
var mustCreate = false;
var cal = window.calendar;

if (!(cal && params.cache)) {
window.calendar = cal = new Zapatec.Calendar(params.firstDay,
params.date,
params.onSelect || onSelect,
params.onClose || function(cal) {
if (params.cache)
cal.hide();
else
cal.destroy();
});
cal.disableFdowClick = params.disableFdowChange;
cal.showsTime = params.showsTime;
cal.time24 = (params.timeFormat == "24");
cal.timeInterval = params.timeInterval;
cal.weekNumbers = params.weekNumbers;
cal.numberMonths = params.numberMonths;
cal.controlMonth = params.controlMonth;
cal.vertical = params.vertical;
cal.monthsInRow = params.monthsInRow;
cal.historyDateFormat = params.ifFormat || params.daFormat;
cal.helpButton = !params.noHelp;
mustCreate = true;
} else {
if (params.date)
cal.setDate(params.date);
cal.hide();
}

if (params.multiple) {
cal.setMultipleDates(params.multiple);
}

cal.showsOtherMonths = params.showOthers;
cal.yearStep = params.step;
cal.setRange(params.range[0], params.range[1]);
cal.params = params;
cal.setDateStatusHandler(params.dateStatusFunc);
cal.getDateText = params.dateText;
cal.setDateFormat(dateFmt);
if (mustCreate)
cal.create();
if (dateEl) {
var dateValue;
//figure out if the it's in value or innerHTML
if (dateEl.value) {
dateValue = dateEl.value;
} else {
dateValue = dateEl.innerHTML;
}
if (dateValue != "") { //if there is a date to initialize from
var parsedDate = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
//This check for when webmaster initializes the box with something like
//"check in"
if (parsedDate != null) { //if it's parsable
cal.setDate(parsedDate);
}
}
}

var position = triggerEl.getPosition();
cal.showAt(position[0], (position[1] + 21));

return false;
};

return cal;
};



var triggerF = new Ext.form.TriggerField({
id: 'deleteFrom',
triggerClass: 'x-form-date-trigger',
readOnly: true,
fieldLabel: 'From',
name: 'from',
anchor:'95%'});

var fromCal = new calendar_setup({inputField:triggerF});


在ie6, ff3下正常。

今天试了下别人改写的extjs dateField(http://extjs.com/forum/showthread.php?t=21931),但是我这里显示不正常。有功夫再研究一下怎么改他本来的控件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值