2011-07-22 69 views
0

我在我的Javascript文件中有一个小错误(我想)。这是简单的文件,但它不能按预期在Firefox 6上运行(在Chrome上它工作正常)。 一切工作除了提交(),和验证()的工作,只有当内的document.ready叫,如果我尝试直接访问这些功能,我得到...ReferenceError:函数未定义

uncaught exception: ReferenceError: (function) is not defined 

这里是JS文件http://pastebin.com/raw.php?i=CMy4WYPF它在jQuery lib之后加载,没有其他的JS文件。

非常感谢您的帮助。

回答

3

您不显示如何或何时加载代码,所以执行时未知。

未提供文档标记,因此无法确定可能或不可行,或者原因。以下是一些改进建议,它们可能会或可能不会有任何改变。

下面的语句:

> var exception = $('#teligence-exception'); 
> var form = $('#teligence-ctc form'); 

是在脚本的顶部。语句执行时,DOM中是否存在由ID引用的元素?

使用jQuery的inArray是在缺乏天然Array.prototype.indexOf方法低效的浏览器(这是相当多的),用于在一个数组码搜索。最好将代码作为带分隔符的字符串,并使用无处不在的String.prototype.indexOf()方法,例如

var codes = '|201|202|203|'; 
... 
    var x = code.indexOf('|' + val + '|'); 

提交功能未在发布代码调用。

大部分的剧本显得很低效:

> var val = $(this).val(); 
    > $(this).val(val.replace(/[^0-9]/, '')); 

可以

var val = this.value; 
    this.value = val.replace(/D/g, ''); 

注意,在原代码,只有第一个非数字字符将被替换。在建议的代码中,所有非数字字符都将被替换(提供g标志)。

另外:

validate($(this).attr('name')); 

可以是:

validate(this.value); 

等。这个想法是不创建不必要的jQuery对象。

+0

我重写了一切,现在是工作,谢谢你的指点优化提示,因为没有其他答案,我会将你的标记标记为正确的。 –

0

不要忘了包括

<script src="jquery-1.xx.x.min.js" type="text/javascript"> </script> 

如果你正在使用jQuery,XX-X代表的

相关问题