2012-02-21 55 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