В моей форме есть часть, в которой пользователь может ввести здание и комнату и нажать кнопку «Добавить», если он хочет войти в другое здание и комнату. Я использую 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