我有一个Web应用程序,在此我必须验证格式的一个日期字段,如mm / dd / yyyy。我在网上搜索但我没有得到合适的。请通过提供新功能或更正我的代码来帮助我。我的代码如下所示..我在onblur事件中调用了这个JS函数..
function isValidDate() {
var re = new RegExp('^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20)dd$');
if (form1.txtDateOfOccurance.value != '' && !form1.txtDateOfOccurance.value.match(re)) {
alert("Invalid date format: " + form1.txtDateOfOccurance.value);
form1.txtDateOfOccurance.value = "";
form1.txtDateOfOccurance.focus();
isEnable();
return false;
}
}
提前致谢..
答案 0 :(得分:2)
在Google搜索“javascript日期验证”时,请查看http://www.smartwebby.com/DHTML/date_validation.asp,首次搜索结果。
答案 1 :(得分:1)
这是你想要的正则表达式。
var re = /^(0[1-9]|1[0-2])\/(0[1-9]|[1-3]\d)\/((19|20)\d\d)$/
虽然你可能会更好,因为inkedmn建议通过解析输入进行验证,因为MM / dd / yyyy是通过Date.parse识别的日期格式。
答案 2 :(得分:0)
我只是尝试将字符串解析为Date对象并检查结果(假设您只需要知道它是否是有效日期):
var myDate = Date.parse(form1.txtDateOfOccurance.value);
if(isNaN(myDate)){
// it's not a real date
}
答案 3 :(得分:0)
function IsValidDate(str) {
var str2="";
var date = new Date(str);
str2 = (date.getMonth()+1) + "/"
+ date.getDay() + "/"
+ (date.getYear()+1900);
return (str == str2);
}
答案 4 :(得分:0)
您可以使用:
function checkdate(input){
var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
var returnval=false;
if (!validformat.test(input.value))
alert("Invalid Date Format. Please correct and submit again.");
else{ //Detailed check for valid date ranges
var monthfield=input.value.split("/")[0];
var dayfield=input.value.split("/")[1];
var yearfield=input.value.split("/")[2];
var dayobj = new Date(yearfield, monthfield-1, dayfield);
if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
alert("Invalid Day, Month, or Year range detected. Please correct and submit again.");
else
returnval=true;
}
if (returnval==false) input.select()
return returnval;
}
答案 5 :(得分:0)
这是我的实施。它会检查有效范围和所有内容。
function validateDate(g) {
var reg = new RegExp("^(([0-9]{2}|[0-9])/){2}[0-9]{4}$");
// Checks if it fits the pattern of ##/##/#### regardless of number
if (!reg.test(g)) return false;
// Splits the date into month, day, and year using / as the delimiter
var spl = g.split("/");
// Check the month range
if (parseInt(spl[0]) < 1 || parseInt(spl[0]) > 12) return false;
// Check the day range
if (parseInt(spl[1]) < 1 || parseInt(spl[1]) > 31) return false;
// Check the year range.. sorry we're only spanning ten centuries!
if (parseInt(spl[2]) < 1800 || parseInt(spl[2]) > 2800) return false;
// Everything checks out if the code reached this point
return true;
}