【问题标题】:jQuery Function "undefined" according to Visual Studio 2010根据 Visual Studio 2010 的 jQuery 函数“未定义”
【发布时间】:2012-07-13 13:44:47
【问题描述】:

这可能是一个关于 jQuery UI 和 Javascript 的非常简单的问题,但我仍然在摸索这些语法。每当我的 C# (ASP.NET) 程序在不同功能中达到某个点时,我都会尝试更新 jQuery 进度条。我这样做正确吗?我可以在我的页面上看到空白的进度条,但我无法让它更新进度。

这是我的脚本:

  <script type="text/javascript">
  $(document).ready(function() {
    $("#progressbar").progressbar({ value: 0 });
  });

function updateProgress(number) {
        if (number < 100) {
            $("#progressbar").progressbar("value", number);
        }
    }
</script>

以下是我的更多脚本参考:

 <link href="Styles/tomcat.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="colorbox.css" />
<script src="Scripts/jquery-1.7.2.js" type="text/javascript"></script>
<script src="Scripts/jquery-ui-1.8.21.custom.js" type="text/javascript"></script>
<script type="text/javascript" src="Scripts/jquery.colorbox.js"></script>
<link href="Content/themes/base/jquery.ui.progressbar.css" rel="stylesheet" type="text/css" />
<link href="Content/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery.ui.core.js" type="text/javascript"></script>
<link href="Scripts/jquery-ui-1.8.21.custom.css" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery.ui.progressbar.js" type="text/javascript"></script>
<link href="Scripts/ui.all.css" rel="stylesheet" type="text/css" />

这里是我尝试通过 C# 函数使用 updateProgress() 函数的地方。我正在尝试将“10%”发送到进度条,但我的调试器出错并说 updateProgress() 未定义。

 ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>UpdateProgress(10);</script>", false);

编辑:我添加了以下布尔值来绕过页面刷新并刷新我的进度条。

 var runOnce = new Boolean;
runOnce = false;
$(document).ready(function() {
    if(!runOnce)
    {
        $("#progressbar").progressbar({ value: 0 });
        runOnce = true;
    }
});

我认为它不起作用。它仍然会在每次页面加载时清除并将其设置回零。

【问题讨论】:

    标签: c# javascript jquery asp.net jquery-ui-progressbar


    【解决方案1】:

    javascript 区分大小写。要么将你的函数声明更改为UpdateProgress,要么将你的注入更改为updateProgress

    我也相信你应该在你的脚本标签上包含type="text/javascript" - 语言是一个不推荐使用的属性。相关:What is the difference between "lang" and "type" attributes in a script tag?

    编辑:处理被覆盖的进度:

    var progressAlreadySet;
    
    $(document).ready(function() {
        $("#progressbar").progressbar(); // initialize
    
        if (!progressAlreadySet) {
            $("#progressbar").progressbar("value", 0);
        }
    });
    
    var updateProgress = function (number) {
        if (number < 100) {
            progressAlreadySet = true;
            $("#progressbar").progressbar("value", number);
        }
    };
    

    【讨论】:

    • 好的,我改了,我不再收到那个错误了,但是它仍然没有在进度条上执行更新。
    • 等等,我刚刚想到了一些事情。您是否认为它正在执行更新,但是因为我在单击 ASP 按钮后调用更新,所以它正在刷新页面并因此将进度条设置回 0?
    • @se_brandon 你的document.ready 可能在你的启动脚本之后执行并将进度设置回0。
    • 我该如何改变/避免这种情况?
    • @se_brandon 首先想到的是您的注入设置的标志,如果设置了标志,则 document.ready 什么也不做。本质上,客户端上的“页面已回发”标志。
    猜你喜欢
    • 2023-03-21
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多