У меня есть форма, где я загружаю элементы меню выбора с помощью ajax. Но есть также опция, которая заполняет все варианты с помощью функции change()
. Но так как нужно дождаться выполнения запроса ajax, мне нужно установить интервал, который будет отличаться каждый раз, поэтому я не могу использовать его таким образом.Получение .done() запроса от другой функции
window.setTimeout(function() {
$("#car_brand").val(vehicle.brand).change();
}, 100);
Так что это изменяет значение #car_brand
и car_brand загружает все параметры из базы данных, когда она будет изменена. Поэтому, если я не устанавливаю другой интервал, он пытается изменить его без загрузки новых параметров. Есть ли способ использования .done()
запроса ajax здесь?
Ajax запрос
function updateField(str, id, prevvalue, value, vehicletype){
$.ajax({
type: "get",
url: "inc/ajax/form_rest.php",
data: { q:str, prevvalue:prevvalue, value:value, vehicletype:vehicletype },
success: function(html) {
$('#'+id).html(html);
}
})
.done(function(){
$("#"+id).removeAttr("disabled");
});
}
Всего изменение функции
function returnVehicleByValue(vehicleValue, vozila){
$.get("inc/ajax/selectMojaVozila.php",
{vehicleValue:vehicleValue},
function(html){
var vehicle = html;
//Select Moja Vozila
$("#"+vozila+"_year").val(vehicle.Year).change()
window.setTimeout(function() {
$("#"+vozila+"_brand").val(vehicle.Marke_vozila).change();
}, 100);
window.setTimeout(function() {
$("#"+vozila+"_model").val(vehicle.Model_vozila).change();
}, 350);
window.setTimeout(function() {
$("#"+vozila+"_type").val(vehicle.Tip_vozila).change();
}, 500);
window.setTimeout(function() {
$("#"+vozila+"_uitvoering").val(vehicle.izvedba_vozila).change();
}, 700);
}, 'json'
);
}
Итак, каждый выбор загружает свои параметры через ajax? Не могли бы вы запустить предыдущий триггер следующего? поэтому в _year ajax это вызвало изменение _brand? и в _brand ajax он вызывает изменение модели? – chrislondon
Хм, я думаю, что это не сработает, потому что мне нужно использовать функцию updateField для других целей. Но, возможно, я мог бы добавить еще один параметр внутри updateField в функцию done(), и когда он будет установлен, он изменит значение следующего выбора. И добавьте функцию updateField внутри returnVehicleByValue ... Пока не знаю, как именно я собираюсь это сделать, но я собираюсь попробовать –
Я не понимаю, зачем вам нужны все эти произвольные таймауты? Почему вы не можете запускать все события изменений сразу? – chinnychinchin