使用Javascript的日期格式化选项
我有一段代码,在验证日期时更新日历小部件和输入字段。我们希望用户能够输入任何类型的m-d-y格式(m.d.y、m-d-y等)。问题是YUI日历小部件只接受m/d/y格式。所有其他它返回为NaN。我尝试了几种方式来安排日期,但似乎没有任何效果。我希望能够做到这一点,没有太多的夸大其词的代码。有人对这里的最佳方法有什么建议吗?这是我的密码:使用Javascript的日期格式化选项,javascript,function,datetime,date,formatting,Javascript,Function,Datetime,Date,Formatting,我有一段代码,在验证日期时更新日历小部件和输入字段。我们希望用户能够输入任何类型的m-d-y格式(m.d.y、m-d-y等)。问题是YUI日历小部件只接受m/d/y格式。所有其他它返回为NaN。我尝试了几种方式来安排日期,但似乎没有任何效果。我希望能够做到这一点,没有太多的夸大其词的代码。有人对这里的最佳方法有什么建议吗?这是我的密码: //CALENDAR ---------------------------------------------------------------------
//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);
}
};
你试过了吗
也许您可以定义一些模式,并对输入进行测试。
我使用正则表达式来确定需要替换和简单使用的分隔符(如果有)。替换。如果所有答案都不起作用怎么办?我还应该接受吗?现在我明白了,我在回答我自己的问题。
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);