html:
<input type="hidden" name="category_id" id="categoryIdInput" value="<?=$id?>" />
<input type="hidden" name="adv_id" id="advertIdInput" value="<?=$AdvertData['id']?>" />
<div id="typeCategoryBlock"></div>
js:
$(function() {
$('#categoryWrap').on('change', '.subCategory:last', function () {
typeCategoryBlock();
});
$('.subCategory:last').each(function () {
typeCategoryBlock();
});
});
function typeCategoryBlock () {
var $this = $(this),
subCategory_id = $('#categoryIdInput').val();
if(subCategory_id == '0') {
$('#fieldsAdvert').remove();
$('#typeCategory').remove();
return false;
}
$.ajax({
url: 'index.php?route=ajax/TypesOfCategoryList',
data: {
id_cat: subCategory_id
},
type: 'POST',
success: function(data) {
$('#fieldsAdvert').remove();
$('#typeCategory').remove();
if (data != '') {
var $typeDiv = $('<div id="typeCategory"><?=$text_typeAdvert?></div>');
var $typeSelect = $('<select name="typeCategory" id="selecttypeCategory"/>');
$typeSelect.append('<option value="0">- <?=$text_select?> -</option>');
$.map(data, function(v) {
if(v.id_type == <?=$AdvertData['id_type']?>) $typeSelect.append('<option value="' + v.id_type + '" selected>' + v.name + '</option>')
else $typeSelect.append('<option value="' + v.id_type + '">' + v.name + '</option>')
});
$typeDiv.append($typeSelect);
$('#typeCategoryBlock').html($typeDiv);
}
}
});
}
как видно этот код генерирует список select уже с выбранным option, эта обработка делается во вовремя загрузки страницы вопрос: как сделать чтоб сработал второй скрипт потому что был автоматически выбран option у select, на данный момент скрипт не запускается а срабатывает только если я вручную выбираю option. код скрипта который не срабатывает:
$(function() {
$('#selecttypeCategory').change(function () {
var $this = $(this),
typeCategory_id = this.value;
alert(typeCategory_id);
if(typeCategory_id == '0') {
$('#fieldsAdvert').remove();
return false;
}
$.ajax({
url: 'index.php?route=ajax/getFielsCategoryListEdit',
data: {
id_cat: $('#categoryIdInput').val(),
id_adv: $('#advertIdInput').val()
},
type: 'POST',
success: function(data) {
$('#fieldsAdvert').remove();
if (data != '') {
var $fieldsAdvert = $('<div id="fieldsAdvert"></div>');
$.map(data, function(v) {
switch (v.type) {
case 'text':
$('<input/>', {
id: v.id_style,
class: v.class_style,
type: v.type,
name: v.name,
value: v.adverts_fields_value,
placeholder: v.placeholder
}).appendTo($fieldsAdvert);
break;
case 'textarea':
break;
case 'password':
$('<input/>', {
id: v.id_style,
class: v.class_style,
type: 'password',
name: v.name,
value: v.field_value,
placeholder: v.placeholder
}).appendTo($fieldsAdvert);
break;
case 'select':
var myselect = $('<select/>', { id: v.id_style, name: v.name});
var items = v.field_value.split(', ');
//Наполняем список
$('<option/>', {
val: '0',
text: v.placeholder
}).appendTo(myselect);
$.each(items,function() {
if (this == v.adverts_fields_value) {
$('<option/>', {
val: this,
text: this,
selected: ''
}).appendTo(myselect);
} else {
$('<option/>', {
val: this,
text: this
}).appendTo(myselect);
}
});
$fieldsAdvert.append(myselect);
break;
case 'time':
break;
case 'date':
break;
case 'dateTime':
break;
case 'checkBox':
var mycheckBoxdiv = $('<div/>', {
id: 'advertCheckBox'
}).appendTo($fieldsAdvert);
var items = v.field_value.split(', ');
$.each(items, function(i,item) {
$('<label/>').append(
$('<input/>', {
type: 'checkbox',
name: 'mycheckbox',
val: item
})
).append(item).appendTo(myradiodiv);
});
break;
case 'radio':
var myradiodiv = $('<div/>', {
id: v.id_style
}).appendTo($fieldsAdvert);
var items = v.field_value.split(', ');
$.each(items, function(i,item) {
if(item == v.adverts_fields_value) {
$('<label/>').append(
$('<input/>', {
type: 'radio',
name: 'myradio',
val: item,
checked: ''
})
).append(item).appendTo(myradiodiv);
} else {
$('<label/>').append(
$('<input/>', {
type: 'radio',
name: 'myradio',
val: item,
checked: ''
})
).append(item).appendTo(myradiodiv);
}
});
break;
case 'hidden':
break;
default:
return 'Type of field not found';
}
});
$('#formElementsBlock').html($fieldsAdvert);
}
}
});
}).trigger('change');
});