Не могу понять как сделать так чтобы когда значение пропадает, то список должен стать снова неактивным, как активный я догадался, а вот если val ничему не равно то он становится активным. Есть вариант и на github если этот пример примерно не понятнее
https://github.com/rusline18/pergrowthnew.git
в siteController
public function actionRegion()
{
$region = Region::getRegion();
foreach ($region as $regionList) {
echo "<option value = '".$regionList->region_id."'>".$regionList->name."</option>";
}
}
public function actionCity($id)
{
$region = City::find()->where(['region_id'=>$id])->count();
$cityList = City::find()->where(['region_id'=>$id])->all();
if ($region>0) {
foreach ($cityList as $city) {
echo "<option value = '".$city->city_id."'>".$city->name."</option>";
}
} echo "<option>Выберите регион</option>";
}
в файле signup
<?php $my_array = ArrayHelper::map(Region::find()->where(['country_id'=>3159])->all(),'region_id', 'name') ?>
<?= $form->field($model, 'region')->dropDownList(
$my_array,
[
'prompt'=> 'Выберите регион',
'onchange'=>'
$.post("index.php?r=site/city&id='.'"+$(this).val(), function(data){
$("select#signupform-city").html(data);
});'
]); ?>
<?= $form->field($model, 'city')->dropDownList(
ArrayHelper::map(City::find()->all(), 'city_id', 'name'),
[
'prompt'=>'Выберите город',
'disabled'=>'disabled'
]); ?>
И в jquery, где реализовано, что когда что-то выбирается из списка, то становится активным список город index.js
$('#signupform-region').change(function(){
$('#signupform-city').prop('disabled',false);
});