在外部.js文件中验证RegExp

时间:2012-01-08 16:35:21

标签: javascript ajax regex

这是一个令人困惑的问题。

我有一个使用AJAX的网站,其中主要主页加载一个home.js文件,其中包含网站上所有页面所需的核心脚本。其中一个核心脚本是以下RegExp:

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文件?

谢谢!

2 个答案:

答案 0 :(得分:0)

页面上的脚本是一个接一个地执行的。从逻辑上讲,所有需要发生的事情都是针定义线在任何需要之前执行。在静态页面上,它就像在标记中将其放在其他JS之前一样简单。在AJAX中,它需要加载并以某种方式在另一个之前执行,这可能会更难。

另一个常见问题是范围。由于您使用的是var,因此该变量将属于其自身范围的本地变量。确保该行不在函数调用中。缩小问题范围的一个好方法是删除var关键字。如果问题得到解决;责备范围。如果它持续存在;责备执行令。

我希望这有助于调试。

答案 1 :(得分:0)

原始的正则表达式和语法运行正常。问题在于另一个jquery语法失败并且没有报告错误,导致后续表达式失败。