2010-04-18 57 views
2

我想,當按下一個鍵被點擊一個鏈接的用戶點擊,我做了這個jQuery的:模擬鏈路

$('form#form1').bind("keypress", function(e){ 
     if(e.keycode == 13 || e.keyChar == 13 || e.which == 13){ 
     $('.LoginBoxButton a').click(); 
     } 
    }); 

它不工作,我已經仔細閱讀以下說明爲什麼:

重要的是要記住, 點擊()不會觸發鏈路上的默認 行爲,即使沒有其他 是防止這一點很重要。所以你不能 使用click()本身來模擬 用戶點擊一個鏈接,並被 帶到另一個url。

但是,您如何模擬用戶點擊鏈接並轉到其他網址?

+1

。點擊()** **不觸發鏈接的默認行爲(真的沒有什麼別的它*不能觸發連接到鏈接元素的任何事件處理程序 – Gareth 2010-04-18 22:20:20

+0

你應該做到這一點,$('。LoginBoxButton a')。trigger('click'); – 2010-04-19 03:22:28

回答

4

你可以走了大約是這樣的:

$('form#form1').bind("keypress", function(e){ 
    if(e.keycode == 13 || e.keyChar == 13 || e.which == 13){ 
     document.location.href = $('.LoginBoxButton a').attr('href'); 
    } 
}); 
+0

工作正常!謝謝! :) – timkl 2010-04-18 22:12:00

+0

@timkl:不客氣。 – Sarfraz 2010-04-18 22:13:27

2

但你如何模擬用戶點擊一個鏈接,被帶到另一個網址?

這是兩個不同的東西:

首先,模擬用戶點擊,是一個相當低的水平的任務。我會嗆到一個無限制的瀏覽器。

第二,將用戶帶到另一個網址,就像分配您想要的網址document.location.href一樣簡單。

所以,與其

$('.LoginBoxButton a').click(); 

使用

document.location.href = $('.LoginBoxButton a').attr('href'); 

希望這有助於。

+1

要模擬點擊,請執行此操作,$('。LoginBoxButton a')。trigger('click'); – 2010-04-19 03:23:51

1

所有jQuery's Event.which首先正常化event.keyCodeevent.charCode - 所以你不必檢查keyCode/charCode
其次決定是否要模擬用戶點擊元素或只是重定向到其他位置,因爲一個和第二個之間存在巨大差異。而最後一個只是重定向第一個,首先執行所有連接的mousedown/mouseup/click(按給定順序)事件。另外,如果click事件將返回false重定向應該被阻止。

所以對於第一種情況的代碼已經給出,但在這裏是真正的模擬代碼:

<a href="test.html">LsINK</a> 
<span>ROBOT</span> 

$("a").mousedown(function() { alert("mousedown"); }) 
     .mouseup(function() { alert("mouseup"); }) 
     .click(function() { alert("click"); return false; }); 

$("span").click(function() { 
    if (false !== $("a").mousedown().mouseup().triggerHandler("click")) { 
     alert("Redirect to: " + $("a").attr("href")); 
     //window.location.href = $("a").attr("href"); 
    } 
});