2011-07-22 71 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代表的

相關問題