这是一个令人困惑的问题。验证外部.js文件中的RegExp
我有一个网站使用AJAX,其中主要主页加载一个home.js文件与网站上所有网页所需的核心脚本。一个这些核心脚本是下述正则表达式:
var datePattern = new RegExp("^([0][1-9]|[1][0-2])\/([0][1-9]|[1-2][0-9]|[3][0-1])\/([12][0-9][0-9][0-9])$");
当用户进入一个页面(通过AJAX),适当的形式验证的script.js文件被加载第一其中包含以下验证日期(其中val是日期元素的值并正确显示预期日期值):
var val=elem[i].value;
if (!datePattern.test(val)) {
elem[i].style.background="#FF0000";
errno++;
}
我已经过了两个剧本,并通过验证的HTML和一切似乎是好的。
一切工作正常FF。但在IE中。我收到datePattern未定义的消息。关于home.js文件中的datePattern声明,我需要进行更改以确保它对全局可用于其他js文件是什么?
谢谢!
难道你不使用已经有日期验证的Javascript库吗? – fge 2012-01-08 16:46:33
当您尝试访问该功能时,该文件可能未加载。 IE不喜欢setTimeout或推迟 – mplungjan 2012-01-08 17:42:57
不,我没有使用JS库,尽管它值得研究。至于正在加载的文件,是的,它实际上是加载的。 home.js文件中的脚本完美地工作,包含$ datePattern.test函数的脚本工作正常......它只是将datePattern注册为Undefined。 (还有其他验证步骤发生在该工作之前和之后,如果我跨过datePattern,则会发生这种情况。) – Max 2012-01-08 18:10:54