Функция jQuery "undefined" в соответствии с Visual Studio 2010

Это может быть довольно простой вопрос о jQuery UI и Javascript, но я все еще чувствую свой путь через этот синтаксис. Я пытаюсь обновить индикатор выполнения jQuery всякий раз, когда моя программа на C# (ASP.NET) достигает определенной точки в разных функциях. Я делаю это правильно? Я вижу пустой индикатор выполнения на своей странице, но не могу обновить его.

Вот мои сценарии:

  <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" />

И здесь я пытаюсь использовать функцию updateProgress() через функцию C#. Я пытаюсь отправить "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;
    }
});

Я не думаю, что это работает, хотя Он по-прежнему очищает и обнуляет каждую загрузку страницы.

1 ответ

Javascript чувствителен к регистру. либо измените объявление вашей функции на UpdateProgress или измените инъекцию на updateProgress,

Также я считаю, что вы должны в том числе type="text/javascript" в вашем теге сценария - язык является устаревшим атрибутом. related: В чем разница между атрибутами "lang" и "type" в теге сценария?

Редактировать: чтобы справиться с процессом перезаписи:

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);
    }
};
Другие вопросы по тегам