我有一个HTML文本字段。我想通过JavaScript验证输入的值是“MM/DD/YY”还是“MM/D/YY”或“MM/DD/YYYY”或“MM/D/YYYY”的有效日期。有没有这样的功能?JavaScript - 验证日期
我觉得有点像isNaN,但我什么也没看到。 JavaScript确实无法验证日期吗?
我有一个HTML文本字段。我想通过JavaScript验证输入的值是“MM/DD/YY”还是“MM/D/YY”或“MM/DD/YYYY”或“MM/D/YYYY”的有效日期。有没有这样的功能?JavaScript - 验证日期
我觉得有点像isNaN,但我什么也没看到。 JavaScript确实无法验证日期吗?
你有没有用Google搜索javascript date validation?它显示了一些很好的信息,以及一个工作代码示例here。
抱歉是PITA,但如果每个人被告知谷歌它,这将不需要这个网站。这个网站是为人们提供建议和代码,而不是只是说谷歌它! – 2009-11-19 21:10:43
我*只是*说谷歌它?你不能看到我给他(一个链接)的代码示例? – 2009-11-19 21:13:09
另外,加里,你不同意有些*做*需要被告知谷歌一点? – 2009-11-19 21:15:41
如果你想冒险进入JQuery的领域,有很多验证插件,包括日期验证。 This plugin是我用过的几次,并且很好地服务了我。
我建议你几个解决方案。
用日期选择器指导用户输入。这样你可以控制输入格式。 jQueryui datepicker是一个流行的实现。
使用js库来管理日期时间数据类型(不是Javascript中的实际数据类型!!)。我建议你date.js。
我使用Bootstrap Datepicker。禁用文本框的其中一个选项应该有效。
<input type="text" id="dateinput"/>
<script type="text/javascript">
$(#"dateinput").datepicker({
buttonImage: "images/calendar.png",
dateFormat: "yyyy-MMM-dd"
});
function validateDate() {
if ($(#"dateinput").val().trim() == "") {
// Is a blank date allowed?
return true;
}
var oldVal = $(#"dateinput").val(); // Current value in textbox
// Now use jQueryUI datepicker to try and set the date with the current textbox value
$(#"dateinput").datepicker("setDate",$(#"dateinput").val());
// Check if the textbox value has changed
if (oldVal != $(#"dateinput").val()) {
// The datepicker will set something different if the date is invalid
$(#"dateinput").val(oldVal); // Set the textbox back to the invalid date
alert ("date was invalid");
return false;
} else {
// If nothing changed, the date must be good.
return true;
}
}
</script>
你可以使用JavaScript自己的Date对象,检查日期。由于日期对象允许对月份和日期值进行一些修改(例如,3月32日将更正为4月1日),因此您可以检查创建的日期是否与您输入的日期相匹配。如果您想要,可以缩短此日期,但清晰度要长一些。
function checkDate(m,d,y)
{
try {
// create the date object with the values sent in (month is zero based)
var dt = new Date(y,m-1,d,0,0,0,0);
// get the month, day, and year from the object we just created
var mon = dt.getMonth() + 1;
var day = dt.getDate();
var yr = dt.getYear() + 1900;
// if they match then the date is valid
if (mon == m && yr == y && day == d)
return true;
else
return false;
}
catch(e) {
return false;
}
}
似乎没有这样做的内置函数。但是,此代码可能是你在找什么:
<script type="text/javascript">
/**--------------------------
//* Validate Date Field script- By JavaScriptKit.com
//* For this script and 100s more, visit http://www.javascriptkit.com
//* This notice must stay intact for usage
---------------------------**/
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
}
</script>
来源:http://www.javascriptkit.com/script/script2/validatedate.shtml
这是我用它来验证日期。
Date.parse返回无效日期的NaN。
这支持日期和日期+时间格式。
希望这会有所帮助。
var msg;
var str = "2013-12-04 23:10:59";
str = "2012/12/42";
var resp = Date.parse(str);
if(!isNaN(resp)) { msg='valid date'; } else { msg='invalid date'; }
console.log(msg);
这不是一个好方法。正如user1883048的回答中所述,某些JavaScript引擎会解析无效日期。 2/31/2014成为3/3/2014。 55/55/5555成为Firefox 2024年的一段时间。 – Quickhorn 2014-06-04 17:47:26
JavaScript无法验证日期。但是你可以用Javascript验证日期。 – rogeriopvl 2009-11-19 21:05:26