2009-10-09 126 views
0

我正在構建一個ASP.NET網站,我對一個頁面的行爲感到困惑,我有一個長表單和一個提交按鈕,我有一塊在下面的JavaScript頁面處理滾動頁面備份後提交表單,第一次我點擊提交按鈕它的作品所有後續點擊根本不工作,任何想法爲什麼?提交表單時JQuery滾動問題

<script type="text/javascript"> 
    $(".thebutton").click(function(){ 
     $("html, body").animate({scrollTop: 200}, 1000); 
    }); 
</script> 

乾杯, 氏

+0

只是爲了清楚 - 表單提交時表單滾動回頁面頂部的期望行爲? – Thom 2009-10-09 20:41:11

+0

想法是當用戶提交(通過ajax)或重置表單時向上滾動。 – Thi 2009-10-10 13:00:55

回答

0

啊,

使用Ajax帖子使得這個不同,我的帖子上面。

您的ajax調用是否更改頁面上的按鈕?我假設你正在使用UpdatePanel和其中的按鈕。

由於當您進行Ajax調用時,UpdatePanel中的控件正在重建,DOM將它們視爲不同的對象,並且這些新對象不再綁定到jQuery click函數。您將需要在ajax帖子後重新綁定這些按鈕的單擊事件以重新啓用您正在尋找的功能。

使用jQuerys新的 「直播」 處理程序應該爲你做的伎倆:

$(".thebutton").live("click", function() { 
     $("html, body").animate({scrollTop: 200}, 1000); 
}); 

希望它能幫助。

+0

這很好用=)我現在有一個剩餘的問題,我回滾了,因爲用戶將要麼進入一個新的註冊表,要麼將讀取驗證摘要中的錯誤消息,滾動只是滾動到正確的地方,但是當顯示驗證摘要時,滾動位置會沿屏幕位置向下移動。有任何想法嗎? – Thi 2009-10-10 15:29:45

+0

$(「form」)。提交(function(){ \t \t \t $('html,body')。scrollTop(200); \t \t}); 或 \t \t $( 「形式」)生活( '提交',函數(){ \t \t \t $( 'HTML,身體')scrollTop的(200); \t \t})。 可能更適合您正在查找的內容。 asp驗證器在表單提交上運行,這發生在按鈕點擊事件之後。你會希望你的函數綁定到表單提交,這樣它會在驗證器之後運行。 – Aaron 2009-10-10 19:20:07

+0

用您的動畫代碼替換我的.scrollTop代碼:) – Aaron 2009-10-10 19:20:44

0

如果你的提交按鈕執行完整的回傳,我會在第二網頁例如查看源代碼,並確保該腳本仍然存在。

+0

不執行完整的回發它使用ajax提交表單數據,無論我已經檢查,並且JavaScript仍然存在。 – Thi 2009-10-10 13:47:59

0

您的腳本將在發佈之前運行。

試想一下,如果你會:

初始頁面加載 綁定點擊使用jQuery事件

點擊按鈕 jQuery的點擊引發 html和身體scrollTop的期間設定爲200 的「動畫」的形式提交

asp.net後臺點擊事件代碼運行 頁面重新加載。

string script = "$(function() { $('html, body').scrollTop(200); });"; 
ClientScript.RegisterStartupScript(this.GetType(), "scrollTop", script, true); 

這應該照顧你想要完成的事情。

希望它有幫助。

+0

它也不起作用,第一次執行(單擊)它工作得很好,其後它沒有。 – Thi 2009-10-10 13:58:39