У меня есть следующие зависимые выпадающие списки в веб-приложении.Используется для сохранения предметов в системе POS.Категории товаров зависят от выбранной компании.Я заполняю список категорий в соответствии с событием изменения списка компаний.При создании элемента все в порядке, так как категории заполняются в соответствии с выбранной компанией.
<select name="company" id="company" class="form-control" required="required">
<option value="">- Select Company -</option>
<?php
$datavalues = new dataValues();
if(isset($user_company[0]['id'])) $datavalues->id = $user_company[0]['id'];
$datavalues->status=1;
$datavalues->order="name ASC";
$data = $company_class->get_companies($datavalues);
if(isset($data['result']) && $data['result']==true){
foreach($data['result'] as $company){
echo '<option value="'.$company['id'].'">'.$company['name'].'</option>';
}
}
?>
</select>
<select name="category" id="category" class="form-control" required="required">
<option value="">- Select Category -</option>
</select>
это ajax-запрос для заполнения категорий с помощью HTML
$('#company').change(function(){
var company_id = $('#company').val();
if(company_id.length>0 && company_id!='' && company_id!=null){
// Get Categories
$.ajax({
url : "ajax/categories/get_select_categories.php",
cache: false,
type: 'POST',
data: { 'company_id':company_id },
success : function(data) {
$('#addItem #category').html(data);
},
error: function(data) {
console.log("Failed to get category list for select ! " + data);
}
});
}
});
Теперь, когда я хочу редактироватьПри отправке записи я передаю сохраненные данные обратно в форму HTML и устанавливаю выбранные значения.Ниже приведен Ajax-запрос для этого.
function editItem(id) {
$.ajax({
url : "ajax/items/edit_item.php",
cache: false,
data: {'id':id},
type: 'POST',
success : function(data) {
var arr = data.split("|");
if(arr[0]=="success") {
$('#addItem #edit_id').val(id);
$('#addItem #company').val(arr[1]).change();
var category = arr[5];
// Get Categories
$.ajax({
url : "ajax/categories/get_select_categories.php",
cache: false,
type: 'POST',
data: { 'company_id':company_id },
success : function(data) {
$('#addItem #category').html(data);
$('#addItem #category').val(category).change();
},
error: function(data) {
console.log("Failed to get category list for select ! " + data);
}
});
}
else {
$('#errorMessage').html(arr[0]);
$('#errorModal').modal();
}
},
error: function(data) {
$('#errorMessage').html("Internal problem detected, Please try again later !");
$('#errorModal').modal();
}
});
}
Проблема в том, что, когда я устанавливаю значение для компании, она вызывает функцию в событии изменения списка компаний.Итак, загрузка категорий в соответствии с заданным значением списка компаний.Из-за этого я не могу установить сохраненное значение списка категорий.(Я не знаю, как определить время окончания времени заполнения списка категорий, если я знаю его, я могу установить выбранную категорию после этого)
Есть ли что-нибудь легкое для этого?Или где я делаю не так?