2012-02-21 56 views
0

我想在vb.net網頁上使用scrollintoview jQuery plugin,不幸的是,在jQuery上相當新的我遇到了問題。VB.net和jQuery scrollintoview插件 - 滾動到一個特定的「輸入」元素

我有一個很長的表單,提交按鈕在底部。驗證在用戶點擊提交後的代碼中完成。

在我的validate()子, 我把控件的ID錯誤(比如txtFirstName)在一個變量ControlInErrorID
controlInErrorID = txtFirstName.ClientID

然後我試圖滾動到最後一個控制錯誤使用腳本經理:

If controlInErrorID <> String.Empty Then 
    Dim csname1 As [String] = "ShowControlInErrorScript" 
    Dim cstype As Type = Me.[GetType]() 

    ' Get a ClientScriptManager reference from the Page class. 
    Dim cs As ClientScriptManager = Page.ClientScript 

    ' Check to see if the startup script is already registered. 
    If Not cs.IsStartupScriptRegistered(cstype, csname1) Then 
     Dim cstext1 As New StringBuilder() 
     cstext1.Append("<script type=text/javascript>") 
     cstext1.Append("$(document).ready(function() {") 
     cstext1.Append(" $(""#" + controlInErrorID + """).scrollintoview({") 
     cstext1.Append("  duration: 5000,") 
     cstext1.Append("  direction: ""vertical"",") 
     cstext1.Append("  complete: function() {") 
     'cstext1.Append("// highlight the element so user's focus gets where it needs to be") 
     cstext1.Append(" }") 
     cstext1.Append("});})") 

     cstext1.Append("</script>") 
     cs.RegisterStartupScript(cstype, csname1, cstext1.ToString()) 
    End If 
End If 

麻煩的是,當運行這個,我沒有錯誤,但沒有任何反應。 有什麼想法嗎?

非常感謝!

+0

當您遇到錯誤時,您只註冊腳本,不執行腳本。我認爲你需要重新加載頁面才能執行javascript代碼。 – 2012-02-21 20:56:13

回答

0

看你的代碼,似乎事情應該工作...的一些建議,你可以做來分析這個問題,你遇到:

  1. 儘量簡化你的腳本測試

    不使用該腳本使用scrollintoview()插件,你可以嘗試寫一個超級簡單的腳本,這只是顯示一個alert框,顯示控件ID。如果顯示的回傳,那麼一定有什麼問題或者jQuery的或插件的加載...

  2. 使用的工具,如Firebug

    我強烈建議你使用類似Firebug(Firefox插件)的工具或至少Google Chrome的開發工具可以提供類似的體驗。檢查:

    • 的jQuery是否已經被加載(在HEAD部分可能)scrollintoview插件
    • 是否已經被加載 jQuery庫
    • 這個特殊的腳本是否已經被添加到頁面底部
  3. 檢查是否scrollintoview實際上(剛剛閉幕FORM標記之前)工作

    你沒有提供任何jQuery的版本信息,因爲我沒有測試過這個插件與最新的版本,但我想應該還是不管工作。但爲了確保,你可以隨時測試特定的插件是否可以正常工作。所有你需要做的是開放的開發工具控制檯(無論是在Firebug或Chrome的工具),並嘗試執行:

    $("#someControlID").scrollintoview(); 
    

    如果插件是否正確裝入這應該滾動特定控制進入視野(所以一定要確保它的而不是已經看到,因爲這個特定的插件在已經看到某些東西時不會做任何事情)。

    如果什麼都不做,你也可以這樣寫行:

    $.fn.scrollintoview 
    

    它應該返回()函數。如果它沒有,那麼這個插件沒有按預期加載,你必須分析。

+0

1.我使用了一個較短的腳本: 'cstext1.Append(「$(document).ready(function(){$('#」+ controlInErrorID +'').css('display','inline-block' ).css('border','3px solid green');});「)' 工作,所以我知道jQuery加載正常。 2.使用Chrome開發工具控制檯,在網絡下,我可以看到加載了jquery-1.7.1和jquery.scrollintoview。我還可以看到腳本已經添加在'' 之前3.jQuery-1.7.1;奇怪的是,在控制檯輸入'jQuery'仍然返回'ReferenceError:jQuery沒有定義'。用'.scrollintoview()替換''.css()'仍然沒有任何效果:( – user544849 2012-02-22 19:16:43

+0

根據你的評論,你似乎遇到了jQuery的問題,挖掘一下,檢查jQuery的加載情況如果有的話 – 2012-02-22 22:34:26

+0

確實,似乎我有jQuery的問題,因爲我能夠使用一些功能,但不是其他人。我嘗試使用核心方法ScrollTop而不是ScrollIntoView插件,也沒有工作。謝謝你的提示,我會繼續解決我的jQuery問題! – user544849 2012-02-28 17:15:34