这是一个令人困惑的问题。
我有一个使用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文件?
谢谢!
答案 0 :(得分:0)
页面上的脚本是一个接一个地执行的。从逻辑上讲,所有需要发生的事情都是针定义线在任何需要之前执行。在静态页面上,它就像在标记中将其放在其他JS之前一样简单。在AJAX中,它需要加载并以某种方式在另一个之前执行,这可能会更难。
另一个常见问题是范围。由于您使用的是var
,因此该变量将属于其自身范围的本地变量。确保该行不在函数调用中。缩小问题范围的一个好方法是删除var
关键字。如果问题得到解决;责备范围。如果它持续存在;责备执行令。
我希望这有助于调试。
答案 1 :(得分:0)
原始的正则表达式和语法运行正常。问题在于另一个jquery语法失败并且没有报告错误,导致后续表达式失败。