Каскадный раскрывающийся вызов цикла AJAXJquery

Программирование на jquery
Ответить
Anonymous
 Каскадный раскрывающийся вызов цикла AJAX

Сообщение Anonymous »

В моей форме есть часть, в которой пользователь может ввести здание и комнату и нажать кнопку «Добавить», если он хочет войти в другое здание и комнату. Я использую AJAX для заполнения комнат на основе выбранного здания. Это работает для первого набора, но как только я нажимаю «Добавить» и страница перезагружается, он повторно отправляет вызов Ajax, тем самым удаляя выбранный пользователем вариант.
Как только я нажимаю «Добавить», появляется два раскрывающихся списка для построения. и два для комнат, независимо от того, какое раскрывающееся меню здания я нажимаю, это влияет только на раскрывающееся меню второй комнаты.
Будем признательны за любые рекомендации.
for (var a = 0; a < @Model.OnCampusSchedules.Count; a++) {
var buildingSelectId = '#BuildingSelect_' + a;
var roomSelectId = '#RoomSelect_' + a;

var selectedBuildingValue = $(buildingSelectId).val();
var selectedRoomValue = $(roomSelectId).val();

$(buildingSelectId).change(function () {
var selectedBuilding = $(this).val();
var roomSelect = $(roomSelectId);

$(roomSelect).empty();

roomSelect.addClass('spinner').prop('disabled', true);

$.ajax({
url: '@Url.Action("GetRoomNumbers", "External")',
type: 'GET',
data: {
building: selectedBuilding,
},
success: function (data) {
if (data.length > 0){
$(data).each(function (index, item) {
roomSelect.append('' + item + '');
});
roomSelect.val(selectedRoomValue);
roomSelect.prop('disabled', false);
}
},
error: function () {
console.error("Failed to get rooms");
},
complete: function () {
roomSelect.removeClass('spinner');
}
});
}).change();

$(roomSelectId).val(selectedRoomValue);
}
});


Schedule
@for(a = 0; a < Model.OnCampusSchedules.Count; a++)
{
@if (Model.OnCampusSchedules[a].IsDeleted)
{

}
else
{



Start Time: *






End Time: *








Building: *






Room: *






Delete Schedule



}
}


Add Schedule




Submit








public IActionResult Add(ExternalForm externalForm)
{
externalForm.OnCampusSchedules.Add(new OnCampusSchedule(_processUser));

return View("Index", externalForm);
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... -loop-call
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»