2009-09-28 89 views
3

如果有人知道如何,當鏈接提交頁面不動即頁面上的鏈接移動提交

<a href="#"></a> 

如果是第2頁長度下,將拍攝到頂部我想知道。

+0

你是什麼意思「鏈接提交」?你在通過JavaScript做「鏈接提交」嗎? – 2009-09-28 09:00:56

+0

當點擊鏈接我想要一個小盒子打開undernieth它 – 2009-09-28 10:21:19

回答

0

如果您使用的是.NET 2.0

有一個在@ Page指令,你可以用它來保持頁面的滾動位置的

MaintainScrollPositionOnPostback

財產。

獲取或設置指示 是否後 回發的用戶返回到同一位置 在客戶端瀏覽器的值。此屬性取代 過時的SmartNavigation屬性。

當網頁回到 服務器時,用戶返回頁面頂部的 。在長網頁上, 這意味着用戶必須將 頁面滾動回頁面上的最後一個位置 。

當 MaintainScrollPositionOnPostback()()() 屬性設置爲true,用戶 而是返回到頁面上的最後一個位置 。

如果您不能使用它,請在提交後將location.href設置爲指定位置處的錨標記。

location.href = "#anchAtPos"; 

其中anchAtPos是指定位置上錨標記的ID。

0

我解決了這個使用:

function anchorReplace() 
{ 
    $("#reportWrapper a").each(function(i){ 
     var anchorElement = $(this); 
     var newAnchorElement = $('<a href="#link' + i + '" name="#link' + i + '">' 
      + anchorElement.text() + '</a>').insertBefore(anchorElement); 
     anchorElement.remove(); 
    }); 
} 
2

無需更換錨,作爲自己的問題的答案的狀態。

這將很好的工作:

<a href="#" onclick="yourOwnSubmitFunction(); return false;"> 

總之,只要你確定這個功能是在onclick處理程序返回布爾false

+0

onclick =「return yourOwnSubmitFunction();」更好。當然,它應該返回錯誤。 – n1313 2009-09-28 10:47:51

2

雖然鏈接的onclick處理程序return false;是停止鏈接的正確方法,但這樣使用鏈接有點麻煩,因爲你得到的是一個動作而不是鏈接。你不能像通常的鏈接一樣鏈接到你的鏈接,比如右鍵單擊書籤,或者中間點擊新標籤等等,所以它不應該有這樣的可供性​​。

另一種方法(例如,SO使用)是將onclick放在非鏈接元素上,例如。:

<span id="potato">Do something</span> 
<script type="text/javascript"> 
    document.getElementById('potato').onclick= function() { 
     // do something 
    }; 
</script> 

這是更清潔,但有一個缺點是,鏈接不能通過常用的鍵盤標籤方法聚焦和激活。

可以說更好的是使用<input type="button"><button type="button">,這是表示動作的正確標記。當然這些看起來完全不同,但是你可以使用CSS來設計它們的樣式,以便它們看起來像是一個鏈接而不是一個按鈕,如果你喜歡的話。這種方法的一個缺點是好老的傻IE不能完全重新設置一個按鈕;您將在此瀏覽器中獲得幾個不可移動的額外填充像素。

+0

這很有道理。我可能會開始使用這種方法。謝謝。 – 2014-11-06 07:41:07

0

我已經把

onclick='return false;' 

鏈接

<a href="#" onclick='return false;' id='attachAlistenertothisID'>This link doesn't jump to the top!</a> 

我用這對我的鏈接已點擊聽衆通過jQuery連接它們內部之前修正了這個。

希望這可以幫助別人!

3

如果您已經通過的jQuery附加事件到HTML控件,那麼你可以使用像return false

$("#myDiv").delegate("tr", "click", function() {  
    enter code here 
    return false; 
});