Индикатор выполнения JQueryUI не сохраняет значение после обновления с помощью отправки формы
Я пытаюсь настроить индикатор выполнения JQuery для обновления, когда пользователь отправляет форму (окончательный код будет более сложным и динамичным, но я просто пытаюсь узнать, как индикатор выполнения работает в первую очередь).
Простой код, который я пытаюсь отладить:
<body>
<form id="form1" method="GET" runat="server">
<div>
<h1>Test</h1>
<input type="submit" value="Start Test"/>
</div>
</form>
<div id="progressbar"></div>
<script type="text/javascript">
$("#progressbar").progressbar({
value: 25
});
$("#progressbar > div").css({ 'background': 'Green' });
$(document).ready(function () {
$("#form1").submit(function () {
$("#progressbar").progressbar({ value: 75 });
});
});
</script>
</body>
Это простая форма, которая инициализирует индикатор выполнения на 25% и запускает функцию.submit, которая устанавливает значение на 75%. Я знаю, что вызывается код подтверждения, потому что, если я нажимаю кнопку "Отправить" несколько раз, в индикаторе выполнения мигает значение 75%.
У меня вопрос: как мне получить значение, которое останется выбранным после того, как оно будет изменено функцией.submit?
Заранее спасибо!
ОБНОВЛЕНИЕ: Спасибо за совет @charlietfl:-) Новое для всего сообщения:-)
Вот код на основе ajax, который у меня есть...
<body>
<form id="form1" method="GET" runat="server">
<div>
<h1>Test</h1>
<input type="submit" value="Start Test"/>
</div>
</form>
<div id="progressbar"></div>
<script type="text/javascript">
$("#progressbar").progressbar({
value: 25
});
$(document).ready(function () {
$("#form1").submit(function () {
$.ajax({
url: "JQueryProgressTest.aspx/GetProgress",
type: "GET",
success: function (data) {
$(".selector").progressbar({value: data});
}
});
});
});
</script>
</body>
Все еще не обновляется... даже значение не мигает.
Спасибо!
боб
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ: Необходимо также добавить некоторые JSON-материалы, чтобы заставить работать обратный вызов со страницы aspx. Ниже приведен полностью рабочий код для всех, кому он нужен:
ASPX Code-Behind:
public partial class JQueryProgressTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static int GetProgress()
{
// Put any code to update the progress bar here
return 50;
}
}
И тело самой страницы aspx:
<body>
<form id="form1" method="GET" runat="server">
<div>
<h1>Test</h1>
<input type="submit" value="Start Test"/>
</div>
</form>
<div id="progressbar" style="border-color: lightgreen;"></div>
<script type="text/javascript">
$("#progressbar").progressbar({
value: 25
});
$("#progressbar > div").css({ 'background': 'Green' });
$(document).ready(function () {
$("#form1").submit(function (event) {
event.preventDefault();
$.ajax({
type: "POST",
url: "JQueryProgressTest.aspx/GetProgress",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$("#progressbar").progressbar({ value: response.d });
},
failure: function(response) {
alert("Error in calling Ajax:" + response.d);
}
});
});
});
</script>
</body>
Еще раз спасибо @charlietfl за помощь!
1 ответ
Между загрузками страниц нет сохранения состояния. Когда вы отправляете форму, она перезагружает страницу в зависимости от действия формы.
Некоторые варианты:
- Используйте ajax для отправки формы, чтобы пользователь не покинул страницу
- Используйте переменную javascript, определенную в коде вашего сервера и переданную тегу script, чтобы установить прогресс, настроить переменную в соответствии с отправкой или нет
- Сохранять состояние в cookie или localStorage и устанавливать значение на основе сохраненного значения