2011-11-23 81 views
2

我有一個測試頁面在這裏:http://www.problemio.com/test.phpjQuery的點擊不承認

如果按「點擊測試註冊」你得到一個形式。如果在該表單上,您單擊「登錄」它會識別您單擊該表單並打開登錄表單。

但問題是,在登錄表單上,如果按下「創建配置文件」,它實際上會轉到href標記的url而不是jQuery click事件。

我的嘔吐是這樣做的最佳做法是什麼?我留下了一個名爲「防止默認行爲」的東西,但不知道應該如何/何時使用它。

我猜測如果用戶有JS被禁用,他們應該仍然可以登錄。我該如何設置它,以便用戶可以先登錄並以jQuery方式創建帳戶,以及一些默認方式if他們有JS禁用?

謝謝!

+0

-1。你應該每個帖子有一個問題,而不是兩個。此外,互聯網上有大量關於如何處理沒有啓用JS的用戶的信息。有很多關於防止jQuery中的默認行爲的信息。使用Google。 – maxedison

+0

如果您想停止事件,請在事件發生後使用e.preventDefault d =從收聽事件。但是,這被用來抑制JS事件。 – theshadowmonkey

+1

+1這不是一個壞問題,是的,有很多關於網絡間網絡的信息-1沒有保證,並不是所有查詢本網站的人都是專家。 – kamui

回答

5

你可以用這個

$("#createprofilelink").click(function(event) { 
     event.preventDefault(); 
     {create profile logic} 
}); 

更多細節純jQuery的做到這一點可以jQuery的文檔http://api.jquery.com/event.preventDefault/

編輯中可以看出:它停止我刪除,因爲@maxedison評論此jQuery事件從發射但我剛剛測試過這和jQuery事件觸發但鏈接不去的地址。

<a id="thelink" href="http://www.google.com" onclick="return false;">the link</a> 
<script> 
     $('#thelink').click(function(){alert('alert me');}); 
</script> 

至於JS是鏈接確實應該指向一個真正的表格填寫,如泰倫東正確地說,問題的殘疾人一部分,所以用戶得到即使用戶體驗是相同的功能降低不使用JavaScript。

你甚至可以下去無腳本路徑

<noscript> 
     <div>Your user experience would be far improved if you 
     enable JavaScript but if you insist, 
     <a href="{real link}">Click Here to create your profile</a></div>    
    </noscript> 
+0

這也將阻止他的jquery點擊事件發射。 – maxedison

4

要解決你鏈路gazumping問題,確實如@kamui說,使用return false;

但是作爲你的JS-禁用的問題 - 點在一個真正的URL的href - >最好是你的JS-啓用的東西相同的URL - 或相同的形式,但在一個新的窗口。

+1

+1我已將你的答案的部分內容納入我自己的內容,但信用證到期時的信用證,你先說。 – kamui

2

我不能按照鏈接,由於在我身邊防火牆的限制,但...

你會想用什麼叫不顯眼的JavaScript。

http://en.wikipedia.org/wiki/Unobtrusive_JavaScript

這意味着,如果JS可用,就使用它,如果不繼續工作爲純HTML。

使用jQuery,您將首先將點擊事件附加到$ .Ready()方法中的按鈕。

<a id='btnTest' href='login.html' /> 

$(document).ready(function() { 
     // Attach click event to btnTest 
     $("#btnTest").click(function (e) { 
          // do logic 
return false; // Returning false here will stop the link from following login.html. 
}); 
    }); 

希望這會有所幫助。