2010-11-21 106 views
0

我試圖對用戶單擊執行輸入驗證。然而,jQuery的click()函數一直工作不穩定;有時它會像我期望的那樣工作,有時點擊鏈接除了將視口移動到屏幕頂部之外什麼也不做。問題是我不能一致地複製錯誤;有時會起作用,有時卻不起作用。我已經在Windows XP和Mac 9.0上的Firefox 9.0中複製了它,但是,有時該頁面可以正常工作,有時不會。有一次,當它加載不正確時,我嘗試清除緩存,並再次加載頁面,並且頁面仍然沒有加載。它似乎從沒有加載到加載,特別是在對文件進行大的修改之後。jquery click()工作不一致

我在這裏設置了一個簡化測試用例:http://kburke.org/thesis/consentform1.php。如果表單工作正常,它應該顯示一個警告框。這裏是代碼:

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 

    $("#submitlink").click(function(){ 
     console.log("link clicked"); 
     alert("Clicked!"); 
    }); 
    console.log("loading..."); 
}); 
</script> 
</head> 
<body style="width:35em; margin-bottom:200px;"> 
<input type="text" value="" name="part_name" id="name1" /> 
<input type="text" value="" name = "part_name2" id="name2" /> 
<input type="checkbox" name="accept_1" id="accept_1" />I signify my agreement that all matters and issues mentioned above have been discussed to my satisfaction and agreement.  <br><br> 
<input type="checkbox" name="accept_2" id="accept_2" />I acknowledge that I am 18 years of age or older on the date of signing this consent, and that I have read and understood all of the above.</p> 
<div id="submitlink" style="float:right; color:blue; text-decoration:underline; cursor:pointer;">I agree</div> 
<form method="post" id="agree" action="/thesis/instructions.php"> 
    <input type="hidden" name="id" id="nextpage" value=""> 
    <input type="hidden" name="name" id="the_name" value="" /> 
</form> 
</body> 
</html> 

謝謝你的任何見解,你可能有,我特別是困惑,行爲是不一致的。

編輯:有人建議console.log導致的問題,但我在移除控制檯語句後仍然有問題。運行Chrome的JS調試器表明,$("#submitlink")調用中的代碼在發生問題時根本沒有運行。像往常一樣,我感謝你的幫助。

+0

產生錯誤的整頁是在這裏:http://kburke.org/thesis/consentform.php頁面上 – 2010-11-21 04:44:13

+0

鏈路工作就好在我的Chrome瀏覽器。 .. – Lukman 2010-11-22 03:17:55

+0

對於我來說,當前版本(它不起作用)是Mac上的Chrome 7.0。我也把它縮小到最小的情況下,它仍然不適合我。 – 2010-11-22 03:22:41

回答

1

我解決了這個問題。 Google Voice Chrome擴展程序正在爲該頁面上的電話號碼添加鏈接,該鏈接干擾了jQuery操作。重要的測試,包括刪除頁面上的元素和禁用Chrome擴展,都驗證了擴展名導致了問題。

下次我會試着記住禁用所有擴展以查看是否導致問題。

我在這裏提交bug報告:http://code.google.com/p/chromium/issues/detail?id=64019

+0

事實上,我剛纔發現,如果您禁用了用於製作可點擊數字的功能,問題就會消失。 – robx 2011-05-31 18:51:54

3

我注意到你的代碼中有一些console.log()聲明。我還注意到,當我打開Firebug時,你的代碼工作。當我關閉Firebug時,代碼不起作用。

console對象不是JavaScript本身的一部分;它是由Firebug(和許多其他調試工具)創建的,以取代批量調試方法alert。當Firebug關閉時,console.log()行會產生致命錯誤,從而停止執行JavaScript。

+0

嗯。這似乎解釋了它,特別是因爲我將通過在Firebug中打開控制檯來檢查錯誤,而不會顯示錯誤。 – 2010-11-21 05:15:38

+0

@Kevin,因爲所有的瀏覽器都不支持這個功能,所以它始終可以將consolo.log消息放在try catch塊中。 – kobe 2010-11-21 05:25:13

+0

我通常使用'safeLog'函數,使用'if($。isFunction(console.log)){console.log(...); }' – rossipedia 2010-11-21 06:23:07

0

刪除的console.log,爲的console.log不會是可用的總