使用Javascript的日期格式选项
Date formatting options using Javascript
我的代码更新日历小部件和输入字段,同时验证日期。我们希望用户能够输入任何类型的m-d-y格式(m.d.y、m-d-y等等)。问题是YUI日历小部件只接受m/d/y格式。其他的都返回NaN。我已经尝试了几种方法来格式化日期,但不能得到任何似乎工作。我希望能够做到这一点,没有很多夸张的代码。有没有人对最好的方法有什么建议?下面是我的代码:
//CALENDAR --------------------------------------------------------------------------------
var initCal = function(calendarContainer){
if(YAHOO.env.getVersion("calendar")){
var txtDate = Dom.get("dateOfLoss");
var myDate = new Date();
var day = myDate.getDate();
var month = myDate.getMonth() +1;
var year = myDate.getFullYear() -1;
var newDate = month + "/" + day + "/" + year;
function handleSelect(type, args, obj){
var dates = args[0];
var date = dates[0];
var year = date[0], month = date[1], day = date[2];
txtDate.value = month + "/" + day + "/" + year;
aCal.hide();
}
function updateCal(){
if (!(txtDate.value.match(/(('d{2})|('d))'/|'-(('d{2})|('d))'/|'-(('d{4})|('d{2}))/))) {
alert("Enter date in mm/dd/yy or mm/dd/yyyy format.");
}
else {
if (txtDate.value != "") {
aCal.select(txtDate.value);
var selectedDates = aCal.getSelectedDates();
if (selectedDates.length > 0) {
var firstDate = selectedDates[0];
aCal.cfg.setProperty("pagedate", (firstDate.getMonth() + 1) + "/" + firstDate.getFullYear());
aCal.render();
}
else {
alert("Date of Loss must be within the past year.");
}
}
}
}
var aCal = new YAHOO.widget.Calendar(null, calendarContainer, {
mindate: newDate,
maxdate: new Date(),
title: "Select Date",
close: true
});
aCal.selectEvent.subscribe(handleSelect, aCal, true);
aCal.render();
Event.addListener("update", "click", updateCal);
Event.addListener(txtDate, "change", function(e){
updateCal();
});
// Listener to show the 1-up Calendar when the button is clicked
// Hide Calendar if we click anywhere in the document other than the calendar
Event.on(document, "click", function(e){
var el = Event.getTarget(e);
if(Dom.hasClass(el, "calendarButton"))
aCal.show();
else if (Dom.hasClass(el, "link-close") || !Dom.isAncestor(calendarContainer, el))
aCal.hide();
});
}
else {
var successHandler = function() {
initCal(calendarContainer);
};
OURPLACE.loadComponent("calendar", successHandler);
}
};
您试过http://www.datejs.com/了吗?
也许您可以定义一些模式并针对输入进行测试。我如何将字符串转换为日期时间与格式规范在JavaScript?
var updateCal = function(){
if (!(txtDate.value.match(/^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.]'d'd+$/))) {
return;
}
//else if ((txtDate.value.match(/^(0?[1-9]|1[012])[- .](0?[1-9]|[12][0-9]|3[01])[- .]'d'd+$/))) {
//}
else {
var changedDate = txtDate.value;
changedDate = changedDate.replace(/[. -]/g, "/");
txtDate.value = changedDate;
badClaimDate = claimDateWithinPastYear();
aCal.select(changedDate);
我使用RegEx来确定需要替换哪些分隔符(如果有的话),并简单地使用.replace.
相关文章:
- 我的单元测试选项是什么
- 如何更改bigquery API中的计费层选项
- 如何使用javascript或html下载PDF格式的填写表单
- 设置饼图的打印选项的格式
- 在新选项卡中以可读格式显示 json
- javascript 可以访问用户在控制面板上的区域和语言格式首选项
- Html将5个数据属性转换为jquery插件选项格式
- 在Google注释图表上设置轴格式(ScaleFormat选项)
- 国际日期时间格式选项哈希:获取带有“2 位”的前导零
- 使用Javascript DOMParser将单字符串HTML格式化为多行选项卡HTML
- 从time中删除格式选项
- POST表单到新选项卡.输出格式为PDF
- 如何在“;数据:图像”;在另一个选项卡中设置格式
- 如何在json中提供日期格式选项
- 使用Javascript的日期格式选项
- 如何在12小时AM/PM格式中添加24小时选项
- CSS格式与表单和选项卡问题
- 使用flot图表创建时间序列图,该图表具有选定时间格式的选项视图图
- 用ng选项将C#日期时间格式化为AngularJS日期
- 使用JQuery/Javascript显示复选框格式选项的实时预览