繁体   English   中英

这个 JavaScript 有问题

[英]There is something wrong with this JavaScript

我开发了一个脚本来检查用户是否为信用卡选择了有效的月份和年份。

function validatemonth()
{
var dt = new Date();
var mth = dt.getMonth();
var yr = dt.getYear(); //this seems to return different data in different browsers
yr = yr + 1900;

if(eval(document.PurchaseCredit.cc_expire_month.value) < mth && eval(document.PurchaseCredit.cc_expire_year.value) == yr)
{
    document.getElementById('error').innerHTML = "Expiry Date cannot be less than current date."; 
    document.forms['PurchaseCredit'].submit.disabled = true;
}
else
{
    document.getElementById('error').innerHTML = ""; 
    document.forms['PurchaseCredit'].submit.disabled = false;
}
}

此脚本在 FireFox 中运行良好,但在 IE7 中不起作用。 为什么?

它不起作用,因为 getYear() 为不同的浏览器返回不同的结果。

IE浏览器:

 * Returns four digits for years before 1900 and after 1999.

火狐:

 * Returns a value less than 0 for years before 1900. For example, the

1800 年返回 -100。 * 对于大于或等于 2000 的年份,返回 100 或更大的值。例如,2008 年返回 108。

您添加的 1900 仅与 Firefox 相关。

简单的解决方案:尝试使用 getFullYear()

Date.getYear() 取决于浏览器。 在 Firefox 中它返回 1900 年之后的年数,在 IE 中它返回完整的 4 位数年份。

Date.getFullYear() 在所有浏览器中返回 4 位年份,因此您应该始终使用它。

尝试:

var yr = dt.getFullYear();

尝试使用getFullYear()而不是getYear() - 它应该适用于两者。 此外,如果您使用getFullYear() ,请同时删除yr = yr + 1900行。

getYear已弃用。 请改用getFullYear

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM